@mediusinc/mng-commons 7.0.0-rc.0 → 7.0.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.
Files changed (30) hide show
  1. package/core/index.d.ts +8 -8
  2. package/fesm2022/mediusinc-mng-commons-core.mjs +2 -6
  3. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  4. package/fesm2022/mediusinc-mng-commons-filter.mjs +20 -0
  5. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  6. package/fesm2022/mediusinc-mng-commons-form.mjs +94 -11
  7. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  8. package/fesm2022/mediusinc-mng-commons-table-api.mjs +0 -2
  9. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  10. package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs → mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs} +2 -2
  11. package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs.map → mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs.map} +1 -1
  12. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs +2417 -0
  13. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs.map +1 -0
  14. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
  15. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +16 -3
  16. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  17. package/fesm2022/mediusinc-mng-commons-tableview.mjs +43 -47
  18. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  19. package/filter/index.d.ts +16 -3
  20. package/form/index.d.ts +48 -6
  21. package/i18n/en.json +5 -2
  22. package/i18n/sl.json +5 -2
  23. package/package.json +1 -1
  24. package/table/api/index.d.ts +2 -2
  25. package/table/index.d.ts +161 -126
  26. package/tableview/api/index.d.ts +1 -3
  27. package/tableview/index.d.ts +24 -33
  28. package/version-info.json +5 -5
  29. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs +0 -2142
  30. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../tmp-esm2022/tableview/api/action/models/action.type.js","../tmp-esm2022/tableview/api/action/descriptors/action.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/data-providers/editor.data-provider.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/action-link.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/models/action-error.model.js","../tmp-esm2022/tableview/api/action/helpers/data-provider-executors.js","../tmp-esm2022/tableview/api/action/models/execution/action-instance-state.model.js","../tmp-esm2022/tableview/api/action/models/tableview-action-default-categories.model.js","../tmp-esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.js","../tmp-esm2022/tableview/api/action/services/data-provider-executor.service.js","../tmp-esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.js","../tmp-esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.js","../tmp-esm2022/tableview/api/editor/models/editor.model.js","../tmp-esm2022/tableview/api/editor/models/field.model.js","../tmp-esm2022/tableview/api/editor/descriptors/field-validation.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-base.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-action.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-group.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-many.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/models/form-editor.event.js","../tmp-esm2022/tableview/api/editor/models/formly-custom-field.model.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview.data-provider.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview.descriptor.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.js","../tmp-esm2022/tableview/api/tableview/helpers/files-export.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-default-actions.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-input-builder.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-create.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.js","../tmp-esm2022/tableview/api/index.js","../tmp-esm2022/tableview/api/mediusinc-mng-commons-tableview-api.js"],"sourcesContent":["export var ActionPositionEnum;\n(function (ActionPositionEnum) {\n ActionPositionEnum[ActionPositionEnum[\"ToolbarLeft\"] = 0] = \"ToolbarLeft\";\n ActionPositionEnum[ActionPositionEnum[\"ToolbarRight\"] = 1] = \"ToolbarRight\";\n ActionPositionEnum[ActionPositionEnum[\"TableHeader\"] = 2] = \"TableHeader\";\n ActionPositionEnum[ActionPositionEnum[\"RowInline\"] = 3] = \"RowInline\";\n ActionPositionEnum[ActionPositionEnum[\"RowClick\"] = 4] = \"RowClick\";\n ActionPositionEnum[ActionPositionEnum[\"FooterLeft\"] = 5] = \"FooterLeft\";\n ActionPositionEnum[ActionPositionEnum[\"FooterRight\"] = 6] = \"FooterRight\";\n})(ActionPositionEnum || (ActionPositionEnum = {}));\nexport var ActionActivationTriggerEnum;\n(function (ActionActivationTriggerEnum) {\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnClick\"] = 0] = \"OnClick\";\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnRoute\"] = 1] = \"OnRoute\"; // action is triggered for activation by route url\n})(ActionActivationTriggerEnum || (ActionActivationTriggerEnum = {}));\nexport var ActionTypeEnum;\n(function (ActionTypeEnum) {\n ActionTypeEnum[ActionTypeEnum[\"Direct\"] = 0] = \"Direct\";\n ActionTypeEnum[ActionTypeEnum[\"Editor\"] = 1] = \"Editor\"; // editor providing middle step for activation\n})(ActionTypeEnum || (ActionTypeEnum = {}));\nexport var ActionEditorSubmitTypeEnum;\n(function (ActionEditorSubmitTypeEnum) {\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Submit\"] = 0] = \"Submit\";\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Cancel\"] = 1] = \"Cancel\";\n})(ActionEditorSubmitTypeEnum || (ActionEditorSubmitTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2FjdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQVFYO0FBUkQsV0FBWSxrQkFBa0I7SUFDMUIseUVBQVcsQ0FBQTtJQUNYLDJFQUFZLENBQUE7SUFDWix5RUFBVyxDQUFBO0lBQ1gscUVBQVMsQ0FBQTtJQUNULG1FQUFRLENBQUE7SUFDUix1RUFBVSxDQUFBO0lBQ1YseUVBQVcsQ0FBQTtBQUNmLENBQUMsRUFSVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUTdCO0FBRUQsTUFBTSxDQUFOLElBQVksMkJBR1g7QUFIRCxXQUFZLDJCQUEyQjtJQUNuQyxtRkFBTyxDQUFBO0lBQ1AsbUZBQU8sQ0FBQSxDQUFDLGtEQUFrRDtBQUM5RCxDQUFDLEVBSFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUd0QztBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsdURBQU0sQ0FBQTtJQUNOLHVEQUFNLENBQUEsQ0FBQyw4Q0FBOEM7QUFDekQsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksMEJBR1g7QUFIRCxXQUFZLDBCQUEwQjtJQUNsQywrRUFBTSxDQUFBO0lBQ04sK0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBR3JDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQWN0aW9uUG9zaXRpb25FbnVtIHtcbiAgICBUb29sYmFyTGVmdCxcbiAgICBUb29sYmFyUmlnaHQsXG4gICAgVGFibGVIZWFkZXIsXG4gICAgUm93SW5saW5lLFxuICAgIFJvd0NsaWNrLFxuICAgIEZvb3RlckxlZnQsXG4gICAgRm9vdGVyUmlnaHRcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtIHtcbiAgICBPbkNsaWNrLCAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIG9uIGNsaWNrXG4gICAgT25Sb3V0ZSAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIGJ5IHJvdXRlIHVybFxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25UeXBlRW51bSB7XG4gICAgRGlyZWN0LCAvLyBhY3Rpb24gaXMgZGlyZWN0bHkgYWN0aXZhdGVkIGFuZCBleGVjdXRlZFxuICAgIEVkaXRvciAvLyBlZGl0b3IgcHJvdmlkaW5nIG1pZGRsZSBzdGVwIGZvciBhY3RpdmF0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtIHtcbiAgICBTdWJtaXQsXG4gICAgQ2FuY2VsXG59XG4iXX0=","import { of } from 'rxjs';\nimport { CommonsInternalError, DataProviderInst, LoggerService, StyleLevelEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';\nimport { ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nexport class ActionDescriptorInst {\n constructor(actionName, cfg) {\n this._type = ActionTypeEnum.Direct;\n this._activationTrigger = ActionActivationTriggerEnum.OnClick;\n this._position = ActionPositionEnum.ToolbarRight;\n this._level = StyleLevelEnum.Default;\n this._routeUrl = null;\n // multiple row selection\n this._hasItemsSelection = false;\n // subactions\n this._subactionsAsMenu = false;\n this._subactions = [];\n this._model = cfg?.model;\n this._actionName = actionName;\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(`Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`);\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n this.setI18nModelActionBaseKey();\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n let displayName = actionName;\n if (this._model)\n displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n get model() {\n return this._model;\n }\n get parentModel() {\n return this._parentModel;\n }\n get parentProperty() {\n return this._parentProperty;\n }\n get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n get type() {\n return this._type;\n }\n get activationTrigger() {\n return this._activationTrigger;\n }\n get position() {\n return this._position;\n }\n get routeUrl() {\n return this._routeUrl;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n return typeof this._runFunction === 'function';\n }\n get runFunction() {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n get actionName() {\n return this._actionName;\n }\n get actionNameLong() {\n return this._actionNameLong;\n }\n get runConfirmation() {\n return this._runConfirmation;\n }\n get runNotificationOnSuccess() {\n return this._runNotificationOnSuccess;\n }\n get runNotificationOnError() {\n return this._runNotificationOnError;\n }\n get afterRunAction() {\n return this._afterRunAction;\n }\n get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n get permissions() {\n return this._permissions;\n }\n get tableviewCategory() {\n return this._tableviewCategory;\n }\n get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n get button() {\n return this._button;\n }\n get component() {\n return this._component;\n }\n get componentFromDi() {\n return this._componentFromDi;\n }\n get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n get subactions() {\n return this._subactions;\n }\n setI18nModelActionBaseKey(base) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withIsVisibleFunction(fn) {\n this._isVisibleFunction = fn;\n return this;\n }\n withIsEnabledFunction(fn) {\n this._isEnabledFunction = fn;\n return this;\n }\n withRouteTrigger(routeUrl) {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n withPosition(position) {\n this._position = position;\n return this;\n }\n /**\n * Creates confirmation action with default style based on action descriptor\n */\n withRunConfirmation(opts = true) {\n this._runConfirmation = opts === true ? {} : opts === false ? undefined : opts;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for run success/error notifications.\n */\n withNotifications(opts) {\n this._runNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.runOnSuccess;\n this._runNotificationOnError = typeof opts === 'boolean' ? opts : opts?.runOnError;\n return this;\n }\n withAfterRunAction(action) {\n this._afterRunAction = action;\n return this;\n }\n withOnRunErrorAction(action) {\n this._onRunErrorAction = action;\n return this;\n }\n withPermissions(permissions) {\n if (this._tableviewCategory) {\n LoggerService.get().debug(`WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n withTableviewCategory(category) {\n this._tableviewCategory = category;\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withButton(label, icon = null, level) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withItemsSelection(hasSelection = true) {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n withComponent(component) {\n this._component = component;\n return this;\n }\n withComponentFromDi(injectionToken) {\n this._componentFromDi = injectionToken;\n return this;\n }\n withPositionTableviewCategories(positionTableviewCategories) {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n withI18nBase(base) {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n withSubactionsAsMenu(subactionsAsMenu = true) {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n withSubactions(...subactions) {\n this._subactions.push(...subactions);\n return this;\n }\n copyFieldsTo(descriptor) {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories ? [...this._positionTableviewCategories] : undefined;\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n if (this._runConfirmation) {\n descriptor._runConfirmation = { ...this._runConfirmation };\n if (this._runConfirmation.acceptButton) {\n descriptor._runConfirmation.acceptButton = { ...this._runConfirmation.acceptButton };\n }\n if (this._runConfirmation.rejectButton) {\n descriptor._runConfirmation.rejectButton = { ...this._runConfirmation.rejectButton };\n }\n }\n descriptor._runNotificationOnSuccess = typeof this._runNotificationOnSuccess === 'object' ? { ...this._runNotificationOnSuccess } : this._runNotificationOnSuccess;\n descriptor._runNotificationOnError = typeof this._runNotificationOnError === 'object' ? { ...this._runNotificationOnError } : this._runNotificationOnError;\n if (this._afterRunAction != null) {\n descriptor._afterRunAction = typeof this._afterRunAction === 'function' ? this._afterRunAction : this._afterRunAction.copy();\n }\n if (this._onRunErrorAction != null) {\n descriptor._onRunErrorAction = typeof this._onRunErrorAction === 'function' ? this._onRunErrorAction : this._onRunErrorAction.copy();\n }\n descriptor._permissions = this._permissions;\n if (this._button) {\n descriptor._button = {\n ...this._button\n };\n if (this._button.style) {\n descriptor._button.style = {\n ...this._button.style\n };\n }\n }\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._componentFromDi = this._componentFromDi;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions.map(a => a.copy());\n return descriptor;\n }\n copy() {\n const descriptor = new ActionDescriptorInst(this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLG1CQUFtQixFQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBT3JDLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQXFCdEcsTUFBTSxPQUFPLG9CQUFvQjtJQWlEN0IsWUFBbUIsVUFBa0IsRUFBRSxHQUF3RDtRQXRDckYsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFDO1FBSWhELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBb0IxQyx5QkFBeUI7UUFDZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFNckMsYUFBYTtRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUE4RCxFQUFFLENBQUM7UUFHbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLEdBQUcsRUFB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SSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQW9CLENBQWtFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0gsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMxQixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJQWN0aW9uRGVzY3JpcHRvcixcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBTdHlsZUxldmVsRW51bSxcbiAgICBmaW5kUmVmbGVjdFR5cGVOYW1lXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lBY3Rpb25CdXR0b25EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGUsIEFjdGlvblZhbGlkYXRpb25GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBBY3Rpb25UeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxJdGVtLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSA9IHtcbiAgICBwYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEl0ZW0sIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICB9O1xuXG50eXBlIEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiA9IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBSdW5SZXR1cm5JdGVtLCBhbnksIHVuZGVmaW5lZD47XG50eXBlIE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gPSBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgUnVuSW5wdXRJdGVtLCBhbnksIHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlID0gYW55LCBSdW5JbnB1dEl0ZW0gPSBJdGVtLCBSdW5SZXR1cm5JdGVtID0gSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IFJ1bklucHV0SXRlbT4gaW1wbGVtZW50cyBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogU3R5bGVMZXZlbEVudW0gPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0O1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfdGFibGV2aWV3Q2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uPzogQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9hZnRlclJ1bkFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KTtcbiAgICBwcm90ZWN0ZWQgX29uUnVuRXJyb3JBY3Rpb24/OiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFJ1bklucHV0SXRlbSwgYW55LCBhbnk+KSA9PiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+KTtcblxuICAgIC8vIHNlY3VyaXR5XG4gICAgcHJvdGVjdGVkIF9wZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIC8vYnV0dG9uXG4gICAgcHJvdGVjdGVkIF9idXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcjtcblxuICAgIC8vIG11bHRpcGxlIHJvdyBzZWxlY3Rpb25cbiAgICBwcm90ZWN0ZWQgX2hhc0l0ZW1zU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvLyBjdXN0b20gYWN0aW9uIGNvbXBvbmVudFxuICAgIHByb3RlY3RlZCBfY29tcG9uZW50PzogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+PjtcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudEZyb21EaT86IEluamVjdGlvblRva2VuPFR5cGU8YW55Pj47XG5cbiAgICAvLyBzdWJhY3Rpb25zXG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zQXNNZW51ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gY2ZnPy5tb2RlbDtcbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZSA9IGFjdGlvbk5hbWU7XG5cbiAgICAgICAgaWYgKChjZmc/LnBhcmVudE1vZGVsICYmICFjZmc/LnBhcmVudFByb3BlcnR5KSB8fCAoIWNmZz8ucGFyZW50UHJvcGVydHkgJiYgY2ZnPy5wYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgbW9kZWwgYW5kIHBhcmVudCBwcm9wZXJ0eSBvciBub25lOiAke3RoaXMuX2FjdGlvbk5hbWV9LCAke2NmZz8ucGFyZW50TW9kZWw/LmkxOG5CYXNlS2V5fSwgJHtjZmc/LnBhcmVudFByb3BlcnR5fS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BhcmVudE1vZGVsID0gY2ZnPy5wYXJlbnRNb2RlbDtcbiAgICAgICAgdGhpcy5fcGFyZW50UHJvcGVydHkgPSBjZmc/LnBhcmVudFByb3BlcnR5O1xuXG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleSgpO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gYWN0aW9uTmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsKSBkaXNwbGF5TmFtZSA9IHRoaXMuX21vZGVsLmkxOG5CYXNlS2V5ID8gYCR7dGhpcy5fbW9kZWwuaTE4bkJhc2VLZXl9LiR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50TW9kZWwpIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fcGFyZW50TW9kZWwuaTE4bkJhc2VLZXl9LiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lTG9uZyA9IGRpc3BsYXlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudE1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50TW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3J1bkZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuRnVuY3Rpb24oKTogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IGFuZCBjYW5ub3QgYmUgaW52b2tlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnRGcm9tRGkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRGcm9tRGk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zQXNNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1vZGVsIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50TW9kZWxcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudE1vZGVsLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvbihwb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgY29uZmlybWF0aW9uIGFjdGlvbiB3aXRoIGRlZmF1bHQgc3R5bGUgYmFzZWQgb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbihvcHRzOiBib29sZWFuIHwgQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT4gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbiA9IG9wdHMgPT09IHRydWUgPyB7fSA6IG9wdHMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogb3B0cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVmYXVsdCBub3RpZmljYXRpb25zIHNldHVwLiBOb3RpZmljYXRpb25zIGNhbiBlaXRoZXIgYmUgb3ZlcnJpZGRlbiB3aXRoIGN1c3RvbSB0ZXh0IG9yIHR1cm5lZCBvbi9vZmYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBQcm92aWRlIGNvbmZpZyBmb3IgdGV4dHMgb3Igb24vb2ZmIGZsYWcgZm9yIHJ1biBzdWNjZXNzL2Vycm9yIG5vdGlmaWNhdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhOb3RpZmljYXRpb25zKG9wdHM/OiB7cnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47IHJ1bk9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbn0gfCBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8ucnVuT25TdWNjZXNzO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5ydW5PbkVycm9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyUnVuQWN0aW9uKGFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPblJ1bkVycm9yQWN0aW9uKGFjdGlvbj86IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnksIGFueT4pID0+IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkuZGVidWcoXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25PcHRzKGJ1dHRvbj86IElBY3Rpb25CdXR0b25EZXNjcmlwdG9yKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2J1dHRvbiA9IGJ1dHRvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b24obGFiZWw/OiBzdHJpbmcgfCBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgbGV2ZWw/OiBTdHlsZUxldmVsRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9idXR0b24sXG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2J1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXRlbXNTZWxlY3Rpb24oaGFzU2VsZWN0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbiA9IGhhc1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA/PyAoY3R4ID0+IG9mKChjdHgucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50RnJvbURpKGluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudEZyb21EaSA9IGluamVjdGlvblRva2VuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJMThuQmFzZShiYXNlOiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGJhc2UpO1xuICAgICAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgZGVmaW5lIGkxOG5CYXNlS2V5IGZvciAke2Jhc2V9IG9uIGFjdGlvbiAke3RoaXMuYWN0aW9uTmFtZUxvbmd9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlID0gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnNBc01lbnUoc3ViYWN0aW9uc0FzTWVudSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9uc0FzTWVudSA9IHN1YmFjdGlvbnNBc01lbnU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9ucy5wdXNoKC4uLnN1YmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUZpZWxkc1RvKFxuICAgICAgICBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+XG4gICAgKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIGRlc2NyaXB0b3IuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXkgPSB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5O1xuICAgICAgICBkZXNjcmlwdG9yLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZGVzY3JpcHRvci5fYWN0aXZhdGlvblRyaWdnZXIgPSB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fbGV2ZWwgPSB0aGlzLl9sZXZlbDtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID0gdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID8gWy4uLnRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllc10gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGV2aWV3Q2F0ZWdvcnkgPSB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICAgICAgZGVzY3JpcHRvci5fcm91dGVVcmwgPSB0aGlzLl9yb3V0ZVVybDtcblxuICAgICAgICBkZXNjcmlwdG9yLl9ydW5GdW5jdGlvbiA9IHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc1Zpc2libGVGdW5jdGlvbiA9IHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydW5Db25maXJtYXRpb24pIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX3J1bkNvbmZpcm1hdGlvbiA9IHsuLi50aGlzLl9ydW5Db25maXJtYXRpb259O1xuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24uYWNjZXB0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24ucmVqZWN0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25FcnJvciA9IHR5cGVvZiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuX2FmdGVyUnVuQWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2FmdGVyUnVuQWN0aW9uID0gdHlwZW9mIHRoaXMuX2FmdGVyUnVuQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fYWZ0ZXJSdW5BY3Rpb24gOiB0aGlzLl9hZnRlclJ1bkFjdGlvbi5jb3B5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci5fb25SdW5FcnJvckFjdGlvbiA9IHR5cGVvZiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fb25SdW5FcnJvckFjdGlvbiA6IHRoaXMuX29uUnVuRXJyb3JBY3Rpb24uY29weSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcGVybWlzc2lvbnMgPSB0aGlzLl9wZXJtaXNzaW9ucztcblxuICAgICAgICBpZiAodGhpcy5fYnV0dG9uKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9idXR0b24gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbi5zdHlsZSkge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuX2J1dHRvbi5zdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLnN0eWxlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc0l0ZW1zU2VsZWN0aW9uID0gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbXBvbmVudCA9IHRoaXMuX2NvbXBvbmVudDtcbiAgICAgICAgZGVzY3JpcHRvci5fY29tcG9uZW50RnJvbURpID0gdGhpcy5fY29tcG9uZW50RnJvbURpO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zQXNNZW51ID0gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9ucyA9IHRoaXMuX3N1YmFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4odGhpcy5fYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport const actionGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates and returns an instance of ActionDescriptorInst, allowing customization of the action's behavior through configuration options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionDescriptorCreateFromModelOptsType<Model, Service, RunInput, RunResult, ValidationInput>} [opts] - Optional configuration object to define the action's behavior, including model, service provider and other.\n * @return {ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput>} An instance of ActionDescriptorInst configured with the provided parameters.\n */\nexport function action(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n ...opts\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBK0Usb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCdkksTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBaUIscUJBQTBELEVBQUUsRUFBRTtJQUNsSCxNQUFNLEdBQUcsR0FBMkQsRUFBRSxDQUFDO0lBQ3ZFLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4QixJQUFLLHFCQUF1QyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFELHFGQUFxRjtZQUNyRixHQUFHLENBQUMsWUFBWSxHQUFHLHFCQUFzRCxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxxQkFBa0QsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDbEIsVUFBa0IsRUFDbEIsSUFBMkY7SUFFM0YsT0FBTyxJQUFJLG9CQUFvQixDQUF1RCxVQUFVLEVBQUU7UUFDOUYsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLEdBQUcsSUFBSTtLQUNWLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhUHJvdmlkZXIsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21Nb2RlbE9wdHNUeXBlPFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgY29uc3QgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmogPSA8TW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5kYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIEFjdGlvbkRlc2NyaXB0b3JJbnN0LCBhbGxvd2luZyBjdXN0b21pemF0aW9uIG9mIHRoZSBhY3Rpb24ncyBiZWhhdmlvciB0aHJvdWdoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbU1vZGVsT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0LCBSdW5SZXN1bHQsIFZhbGlkYXRpb25JbnB1dD59IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGRlZmluZSB0aGUgYWN0aW9uJ3MgYmVoYXZpb3IsIGluY2x1ZGluZyBtb2RlbCwgc2VydmljZSBwcm92aWRlciBhbmQgb3RoZXIuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBSdW5JbnB1dCA9IE1vZGVsLCBSdW5SZXN1bHQgPSBNb2RlbCwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRzPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBSdW5JbnB1dCwgUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PihhY3Rpb25OYW1lLCB7XG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25HZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgIC4uLm9wdHNcbiAgICB9KTtcbn1cbiJdfQ==","import { Subject } from 'rxjs';\nimport { DataProviderInst } from '@mediusinc/mng-commons/core';\nexport class EditorDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this._editorResetSubject = new Subject();\n }\n get fetch() {\n return this._fetch;\n }\n get create() {\n return this._create;\n }\n get update() {\n return this._update;\n }\n get delete() {\n return this._delete;\n }\n get mapFetchItemToCreateItem() {\n return this._mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this._mapFetchItemToUpdateItem;\n }\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn) {\n this._fetch = fn;\n return this;\n }\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<CreateModel, Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn) {\n this._create = fn;\n return this;\n }\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn) {\n this._update = fn;\n return this;\n }\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn) {\n this._delete = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to create model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, CreateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam CreateModel The type of data to map to.\n */\n withMapFetchItemToCreateItem(fn) {\n this._mapFetchItemToCreateItem = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to update model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, UpdateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam UpdateModel The type of data to map to.\n */\n withMapFetchItemToUpdateItem(fn) {\n this._mapFetchItemToUpdateItem = fn;\n return this;\n }\n resetEditor(event) {\n this._editorResetSubject.next(event ?? {});\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQTBFLE1BQU0sNkJBQTZCLENBQUM7QUFxRnRJLE1BQU0sT0FBTyxzQkFDVCxTQUFRLGdCQUE4QztJQVl0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFWSix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQVdoRixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDeEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsQ0FBQyxFQUFpRDtRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsVUFBVSxDQUFDLEVBQWdFO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxVQUFVLENBQW1CLEVBQXlEO1FBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBK0I7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtEYXRhUHJvdmlkZXJJbnN0LCBJRGF0YVByb3ZpZGVyLCBJZFR5cGUsIEl0ZW1Pck9ic2VydmFibGUsIFNlcnZpY2VDbGFzc09wdFR5cGUsIFVuZGVmaW5lZH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtFZGl0b3JSZXNldEV2ZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuXG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8TW9kZWw+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwgPSBhbnksIE1vZGVsID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBJdGVtID0gVW5kZWZpbmVkPENyZWF0ZU1vZGVsPiwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxVbmRlZmluZWQ8TW9kZWw+Pj4gPSAoXG4gICAgaXRlbTogSXRlbSxcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxcbiAgICBVcGRhdGVNb2RlbCA9IGFueSxcbiAgICBNb2RlbCA9IGFueSxcbiAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgIElkID0gSWRUeXBlLFxuICAgIEl0ZW0gPSBVbmRlZmluZWQ8VXBkYXRlTW9kZWw+LFxuICAgIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8VW5kZWZpbmVkPE1vZGVsPj5cbj4gPSAoaWQ6IElkLCBpdGVtOiBJdGVtLCBzZXJ2aWNlOiBTZXJ2aWNlKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwgPSBhbnksIFNlcnZpY2UgPSB1bmRlZmluZWQsIEl0ZW0gPSB1bmRlZmluZWQsIElkID0gSWRUeXBlLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPFVuZGVmaW5lZDxNb2RlbD4+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBpdGVtOiBJdGVtXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8RnJvbU1vZGVsLCBUb01vZGVsPiA9IChpdGVtOiBGcm9tTW9kZWwpID0+IFRvTW9kZWw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICBjcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlclVwZGF0ZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICB1cGRhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhVcGRhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGRlbGV0ZT86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgYW55PjtcblxuICAgIHdpdGhEZWxldGU8SXRlbSA9IHVuZGVmaW5lZD4oZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwsIFNlcnZpY2UsIEl0ZW0+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBVcGRhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IHR5cGUgSUVkaXRvckRhdGFQcm92aWRlckZuc1R5cGU8TW9kZWwsIFNlcnZpY2UsIENyZWF0ZU1vZGVsID0gTW9kZWwsIFVwZGF0ZU1vZGVsID0gTW9kZWwsIERlbGV0ZU1vZGVsID0gTW9kZWw+ID0gSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiAmXG4gICAgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlPFVwZGF0ZU1vZGVsLCBNb2RlbCwgU2VydmljZT4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGU8RGVsZXRlTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXJTdXBwb3J0PE1vZGVsPiB7XG4gICAgZ2V0IGVkaXRvclJlc2V0JCgpOiBPYnNlcnZhYmxlPEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+PjtcblxuICAgIHJlc2V0RWRpdG9yKGV2ZW50PzogRWRpdG9yUmVzZXRFdmVudDxNb2RlbD4pOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPiA9IElEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBTZXJ2aWNlQ2xhc3Ncbj4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyU3VwcG9ydDxNb2RlbD47XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lZGl0b3JSZXNldFN1YmplY3QgPSBuZXcgU3ViamVjdDxFZGl0b3JSZXNldEV2ZW50PE1vZGVsPj4oKTtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9jcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+O1xuICAgIHByb3RlY3RlZCBfZGVsZXRlPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBhbnk+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdG9yUmVzZXQkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yUmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZldGNoIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEVkaXRvckRhdGFQcm92aWRlciB3aXRoIHRoZSBmZXRjaCBmdW5jdGlvbiBzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaCA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjcmVhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+fSBmbiAtIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBjcmVhdGluZyBuZXcgaXRlbXMuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aENyZWF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB1cGRhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIHVwZGF0ZSBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkZWxldGUgZnVuY3Rpb24gZm9yIHRoZSBlZGl0b3IgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPn0gZm4gLSBUaGUgZGVsZXRlIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aERlbGV0ZTxJdGVtID0gdW5kZWZpbmVkPihmbj86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZ1bmN0aW9uIHRvIG1hcCBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gY3JlYXRlIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD59IGZuIC0gVGhlIG1hcCBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBjbGFzcy5cbiAgICAgKlxuICAgICAqIEB0eXBlcGFyYW0gTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSBmcm9tIGZldGNoIGZ1bmN0aW9uIHRvIG1hcCBmcm9tLlxuICAgICAqIEB0eXBlcGFyYW0gQ3JlYXRlTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSB0byBtYXAgdG8uXG4gICAgICovXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZnVuY3Rpb24gdG8gbWFwIGRhdGEgZnJvbSBmZXRjaCBmdW5jdGlvbiB0byB1cGRhdGUgbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPn0gZm4gLSBUaGUgbWFwIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gbWFwIGZyb20uXG4gICAgICogQHR5cGVwYXJhbSBVcGRhdGVNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRvIG1hcCB0by5cbiAgICAgKi9cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRvclJlc2V0U3ViamVjdC5uZXh0KGV2ZW50ID8/IHt9KTtcbiAgICB9XG59XG4iXX0=","import { CommonsInternalError, StyleLevelEnum, StyleSizeEnum } from '@mediusinc/mng-commons/core';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nimport { ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nimport { ActionDescriptorInst } from './action.descriptor';\nexport class ActionEditorDescriptorInst extends ActionDescriptorInst {\n constructor(editorDescriptor, actionName, cfg) {\n super(actionName, {\n ...cfg,\n model: cfg?.model ?? editorDescriptor.model\n });\n this._dataProvider = undefined;\n this._editorActions = [];\n this._editorTitle = undefined;\n this._editorTitleParams = undefined;\n this._dialogSize = StyleSizeEnum.Normal;\n this._resubmitRefetch = true;\n this._unsavedChangesConfirmation = false;\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n get editorTitle() {\n return this._editorTitle;\n }\n get editorTitleParams() {\n return this._editorTitleParams;\n }\n get editorDescriptor() {\n return this._editorDescriptor;\n }\n get dialogSize() {\n return this._dialogSize;\n }\n get dialogClassName() {\n return this._dialogClassName;\n }\n get fetchNotificationOnSuccess() {\n return this._fetchNotificationOnSuccess;\n }\n get fetchNotificationOnError() {\n return this._fetchNotificationOnError;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get runFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get hasFetchFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get fetchFunction() {\n return this._fetchFunction;\n }\n get hasSubmitFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get submitFunction() {\n return this._submitFunction;\n }\n get editorActions() {\n return this._editorActions;\n }\n get editorComponent() {\n return this._editorComponent;\n }\n get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n withEditorTitle(title, params) {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n withDialogSize(size = StyleSizeEnum.Normal) {\n this._dialogSize = size;\n return this;\n }\n withDialogClassName(className) {\n this._dialogClassName = className;\n return this;\n }\n withRunFunction(fn) {\n return this.withSubmitFunction(fn);\n }\n withFetchFunction(fn) {\n this._fetchFunction = fn;\n return this;\n }\n withSubmitFunction(fn) {\n this._submitFunction = fn;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.\n */\n withNotifications(opts) {\n super.withNotifications(typeof opts === 'boolean'\n ? opts\n : {\n runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,\n runOnError: opts?.submitOnError ?? opts?.runOnError\n });\n this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;\n this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;\n return this;\n }\n withEditorAction(action) {\n this._editorActions.push(action);\n return this;\n }\n withEditorActions(actions) {\n this._editorActions = actions;\n return this;\n }\n withEditorComponent(editorComponent) {\n this._editorComponent = editorComponent;\n return this;\n }\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n withResubmit(enabled, refetch = true) {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n withUnsavedChangesConfirmation(unsavedChangesConfirmation = true) {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n copyFieldsTo(descriptor) {\n super.copyFieldsTo(descriptor);\n descriptor._editorActions = this._editorActions.map(a => a.copy());\n descriptor._editorTitle = this._editorTitle;\n descriptor._editorTitleParams = this._editorTitleParams != null ? { ...this._editorTitleParams } : undefined;\n descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? { ...this._fetchNotificationOnSuccess } : this._fetchNotificationOnSuccess;\n descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? { ...this._fetchNotificationOnError } : this._fetchNotificationOnError;\n descriptor._dialogSize = this._dialogSize;\n descriptor._dialogClassName = this._dialogClassName;\n descriptor._fetchFunction = this._fetchFunction;\n descriptor._submitFunction = this._submitFunction;\n descriptor._editorComponent = this._editorComponent;\n descriptor._resubmitEnabled = this._resubmitEnabled;\n descriptor._resubmitRefetch = this._resubmitRefetch;\n descriptor._unsavedChangesConfirmation = this._unsavedChangesConfirmation;\n return descriptor;\n }\n copy() {\n const editor = this._editorDescriptor.copy();\n const descriptor = new ActionEditorDescriptorInst(editor, this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\nexport class ActionEditorSubmitDescriptorInst extends ActionDescriptorInst {\n constructor(editorActionName, editorActionModel, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorActionName}.submit` : `${editorActionName}.cancel`, { model: editorActionModel });\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n }\n get submitType() {\n return this._submitType;\n }\n copy() {\n const descriptor = new ActionEditorSubmitDescriptorInst(this._actionName.split('.').slice(0, -1).join('.'), this._model?.copy(), this._submitType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n level: editorAction.button?.style?.level\n }\n });\n}\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n textButton: true,\n level: StyleLevelEnum.Secondary\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdsSCxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFHN0csT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFBdUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWEvRixNQUFNLE9BQU8sMEJBUVgsU0FBUSxvQkFBc0Y7SUF1QjVGLFlBQW1CLGdCQUF1RCxFQUFFLFVBQWtCLEVBQUUsR0FBOEQ7UUFDMUosS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNkLEdBQUcsR0FBRztZQUNOLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFLLGdCQUFnQixDQUFDLEtBQTBDO1NBQ3BGLENBQUMsQ0FBQztRQXpCcUIsa0JBQWEsR0FBb0MsU0FBUyxDQUFDO1FBRTdFLG1CQUFjLEdBQWtFLEVBQUUsQ0FBQztRQUNuRixpQkFBWSxHQUFtQixTQUFTLENBQUM7UUFDekMsdUJBQWtCLEdBQVMsU0FBUyxDQUFDO1FBS3JDLGdCQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQVNuQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBUTFDLElBQUksR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsQ0FBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FB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QUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNwSSxLQUFLLEVBQUU7WUFDSCxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztTQUMzQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixZQUFxRixFQUNyRixVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTTtJQUU5QyxPQUFPLElBQUksZ0NBQWdDLENBQXFCLFlBQVksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDcEksS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFDaEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO1NBQ2xDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIFNlcnZpY2VDbGFzc1R5cGUsIFN0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JSdW5GblR5cGUsIEFjdGlvbk5vdGlmaWNhdGlvblR5cGUsIEFjdGlvblJ1bkZuVHlwZX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4vYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiAmIHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I/OiBib29sZWFuO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8XG4gICAgSXRlbSxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIEVkaXRvckl0ZW0gPSBJdGVtLFxuICAgIEZldGNoSW5wdXRJdGVtID0gSXRlbSxcbiAgICBTdWJtaXRSZXR1cm5JdGVtID0gSXRlbSxcbiAgICBWYWxpZGF0aW9uSW5wdXRJdGVtID0gSXRlbSxcbiAgICBQYXJlbnRFZGl0b3JJdGVtID0gdW5kZWZpbmVkXG4+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+ID0gdW5kZWZpbmVkO1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdID0gW107XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZVBhcmFtcz86IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBfc3VibWl0RnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRvckNvbXBvbmVudD86IFR5cGU8YW55PjtcblxuICAgIHByb3RlY3RlZCBfcmVzdWJtaXRFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0UmVmZXRjaCA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIGFueT4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uY2ZnLFxuICAgICAgICAgICAgbW9kZWw6IGNmZz8ubW9kZWwgPz8gKGVkaXRvckRlc2NyaXB0b3IubW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8SXRlbT4pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb25FZGl0b3JTdWJtaXQodGhpcyksIGFjdGlvbkVkaXRvckNhbmNlbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGVQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaGFzUnVuRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHJ1bkZ1bmN0aW9uKCk6IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0ZldGNoRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzU3VibWl0RnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1Ym1pdEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0RnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yQWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckNvbXBvbmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0UmVmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JUaXRsZSh0aXRsZTogc3RyaW5nIHwgbnVsbCwgcGFyYW1zPzogYW55KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ1NpemUoc2l6ZSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ0NsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dDbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oZm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hGdW5jdGlvbihmbjogQWN0aW9uRWRpdG9yUnVuRm5UeXBlPEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0sIFNlcnZpY2UsIEZldGNoSW5wdXRJdGVtLCBFZGl0b3JJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3VibWl0RnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJtaXRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgc2V0dXAuIE5vdGlmaWNhdGlvbnMgY2FuIGVpdGhlciBiZSBvdmVycmlkZGVuIHdpdGggY3VzdG9tIHRleHQgb3IgdHVybmVkIG9uL29mZi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIFByb3ZpZGUgY29uZmlnIGZvciB0ZXh0cyBvciBvbi9vZmYgZmxhZyBmb3Igc3VibWl0IChpcyBzYW1lIGFzIHJ1bikgb3IgZmV0Y2ggc3VjY2Vzcy9lcnJvciBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgb3B0cz86XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIHN1Ym1pdE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgc3VibWl0T25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBydW5PbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBmZXRjaE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hPbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICk6IHRoaXMge1xuICAgICAgICBzdXBlci53aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgICAgIHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgICAgICA/IG9wdHNcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBydW5PblN1Y2Nlc3M6IG9wdHM/LnN1Ym1pdE9uU3VjY2VzcyA/PyBvcHRzPy5ydW5PblN1Y2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgcnVuT25FcnJvcjogb3B0cz8uc3VibWl0T25FcnJvciA/PyBvcHRzPy5ydW5PbkVycm9yXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uU3VjY2VzcztcbiAgICAgICAgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uRXJyb3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckNvbXBvbmVudChlZGl0b3JDb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JDb21wb25lbnQgPSBlZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgcmVzdWJtaXQgcmVzdWJtaXQgLSB0aGlzIG1lYW5zIHRoZSBmb3JtIHdpbGwgbm90IGV4aXQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uLCBidXQgd2lsbCBpbnN0ZWFkIHJlbWFpbiBvcGVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZW5hYmxlZD10cnVlXSAtIFNwZWNpZmllcyB3aGV0aGVyIHJlc3VibWl0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIERlZmF1bHRzIHRvIHRydWUgaWYgbm90IHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JlZmV0Y2g9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBzaG91bGQgYmUgcmVmZXRjaGVkIGFmdGVyIHJlc3VibWl0LiBJZiBub3QsIHRoZSBkYXRhIGluIHRoZSBmb3JtIHN0YXlzIGFzIGlzLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugd2l0aCB0aGUgcmVzdWJtaXQgY29uZmlndXJhdGlvbiB1cGRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUmVzdWJtaXQoZW5hYmxlZD86IGJvb2xlYW4sIHJlZmV0Y2ggPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0RW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0UmVmZXRjaCA9IHJlZmV0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24odW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvcHlGaWVsZHNUbyhcbiAgICAgICAgZGVzY3JpcHRvcjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+XG4gICAgKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+IHtcbiAgICAgICAgc3VwZXIuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JBY3Rpb25zID0gdGhpcy5fZWRpdG9yQWN0aW9ucy5tYXAoYSA9PiBhLmNvcHkoKSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlID0gdGhpcy5fZWRpdG9yVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlUGFyYW1zID0gdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXMgIT0gbnVsbCA/IHsuLi50aGlzLl9lZGl0b3JUaXRsZVBhcmFtc30gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPT09ICdvYmplY3QnID8gey4uLnRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3IgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3J9IDogdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2RpYWxvZ1NpemUgPSB0aGlzLl9kaWFsb2dTaXplO1xuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dDbGFzc05hbWUgPSB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoRnVuY3Rpb24gPSB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJtaXRGdW5jdGlvbiA9IHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JDb21wb25lbnQgPSB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0RW5hYmxlZCA9IHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICAgICAgZGVzY3JpcHRvci5fcmVzdWJtaXRSZWZldGNoID0gdGhpcy5fcmVzdWJtaXRSZWZldGNoO1xuICAgICAgICBkZXNjcmlwdG9yLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuX2VkaXRvckRlc2NyaXB0b3IuY29weSgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPihcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgbW9kZWw6IHRoaXMuX21vZGVsPy5jb3B5KCksXG4gICAgICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnksIGFueT4sXG4gICAgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdFxuKTogQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+KGVkaXRvckFjdGlvbi5hY3Rpb25OYW1lLCBlZGl0b3JBY3Rpb24ubW9kZWwsIHN1Ym1pdFR5cGUpLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGxldmVsOiBlZGl0b3JBY3Rpb24uYnV0dG9uPy5zdHlsZT8ubGV2ZWxcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIGNyZWF0ZXMgc2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIHRleHQgYnV0dG9uIHN0eWxlXG4gKiBAcGFyYW0gZWRpdG9yQWN0aW9uXG4gKiBAcGFyYW0gc3VibWl0VHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yQ2FuY2VsPE1vZGVsLCBFZGl0b3JNb2RlbD4oXG4gICAgZWRpdG9yQWN0aW9uOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBFZGl0b3JNb2RlbCwgYW55LCBhbnksIGFueSwgYW55PixcbiAgICBzdWJtaXRUeXBlID0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uQ2FuY2VsXG4pOiBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4oZWRpdG9yQWN0aW9uLmFjdGlvbk5hbWUsIGVkaXRvckFjdGlvbi5tb2RlbCwgc3VibWl0VHlwZSkud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdGV4dEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl19","import { ActionEditorDescriptorInst } from './action-editor.descriptor';\nexport const actionEditorGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates an ActionEditorDescriptorInst instance with the provided editor descriptor and options.\n *\n * @param {string} actionName - The name of the action to associate with the editor.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance to be used.\n * @param {ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput>} [opts] - Optional configuration options for the ActionEditor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput>} An instance of ActionEditorDescriptor with the configured parameters.\n */\nexport function actionEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n ...opts,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n model: opts?.model\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUErQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBYXBILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQWlCLHFCQUFnRSxFQUFFLEVBQUU7SUFDOUgsTUFBTSxHQUFHLEdBQWlFLEVBQUUsQ0FBQztJQUM3RSxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBNkMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoRSxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLFlBQVksR0FBRyxxQkFBNEQsQ0FBQztRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNKLEdBQUcsQ0FBQyxXQUFXLEdBQUcscUJBQWtELENBQUM7UUFDekUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQVN4QixVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxJQUFnRztJQUVoRyxPQUFPLElBQUksMEJBQTBCLENBQTJGLE1BQU0sRUFBRSxVQUFVLEVBQUU7UUFDaEosR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZX0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICYge1xuICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGZldGNoSW5wdXRUeXBlPzogVHlwZURlc2NyaXB0b3I8RmV0Y2hJbnB1dD47XG4gICAgc3VibWl0UmV0dXJuVHlwZT86IFR5cGVEZXNjcmlwdG9yPFN1Ym1pdFJldHVybj47XG4gICAgdmFsaWRhdGlvblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxWYWxpZGF0aW9uSW5wdXQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqID0gPE1vZGVsLCBTZXJ2aWNlPihzZXJ2aWNlT3JEYXRhUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSA9PiB7XG4gICAgY29uc3QgY2ZnOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcuZGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2ZnLnNlcnZpY2VUeXBlID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNmZztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBlZGl0b3IgZGVzY3JpcHRvciBhbmQgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIGVkaXRvci5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIGFueT59IGVkaXRvciAtIFRoZSBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZSB0byBiZSB1c2VkLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0Pn0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQWN0aW9uRWRpdG9yLlxuICogQHJldHVybiB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBGZXRjaElucHV0LCBTdWJtaXRSZXR1cm4sIFZhbGlkYXRpb25JbnB1dD59IEFuIGluc3RhbmNlIG9mIEFjdGlvbkVkaXRvckRlc2NyaXB0b3Igd2l0aCB0aGUgY29uZmlndXJlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yPFxuICAgIEVkaXRvck1vZGVsLFxuICAgIE1vZGVsID0gRWRpdG9yTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBGZXRjaElucHV0ID0gTW9kZWwsXG4gICAgU3VibWl0UmV0dXJuID0gTW9kZWwsXG4gICAgVmFsaWRhdGlvbklucHV0ID0gTW9kZWwsXG4gICAgUGFyZW50RWRpdG9ySXRlbSA9IHVuZGVmaW5lZFxuPihcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgZWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbT4sXG4gICAgb3B0cz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport class ActionLinkDescriptorInst extends ActionDescriptorInst {\n constructor(actionName = 'link', cfg) {\n super(actionName, cfg);\n this._url = '';\n this._pathSegments = [];\n this._replaceUrl = false;\n this._target = '_self';\n this._isStyleLink = false;\n }\n get url() {\n return this._url;\n }\n get pathSegments() {\n return this._pathSegments;\n }\n get queryParams() {\n return this._queryParams;\n }\n get queryParamsHandling() {\n return this._queryParamsHandling;\n }\n get replaceUrl() {\n return this._replaceUrl;\n }\n get target() {\n return this._target;\n }\n get isStyleLink() {\n return this._isStyleLink;\n }\n withHref(url) {\n this._url = url;\n return this;\n }\n withRouterLink(...pathSegments) {\n this._pathSegments = pathSegments;\n return this;\n }\n withQueryParams(queryParams, queryParamsHandling) {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n withReplaceUrl(replaceUrl = false) {\n this._replaceUrl = replaceUrl;\n return this;\n }\n withTarget(target = '_self') {\n this._target = target;\n return this;\n }\n withStyleLink(isStyleLink) {\n this._isStyleLink = isStyleLink;\n return this;\n }\n copy() {\n const descriptor = new ActionLinkDescriptorInst(this._actionName, {\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor); // copy base action\n descriptor._url = this._url;\n descriptor._pathSegments = [...this._pathSegments];\n descriptor._queryParams = { ...this._queryParams };\n descriptor._queryParamsHandling = this._queryParamsHandling;\n descriptor._replaceUrl = this._replaceUrl;\n descriptor._target = this._target;\n descriptor._isStyleLink = this._isStyleLink;\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLE9BQU8sd0JBQTJELFNBQVEsb0JBQWdGO0lBUzVKLFlBQVksVUFBVSxHQUFHLE1BQU0sRUFBRSxHQUErQztRQUM1RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVG5CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTdCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsR0FBRyxZQUFzQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CLEVBQUUsbUJBQXlDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBNkIsT0FBTztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW9CO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQTRCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUNsRCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlLCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkxpbmtEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzPE1vZGVsPiA9IE9taXQ8QWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIHVuZGVmaW5lZD4sICdzZXJ2aWNlVHlwZScgfCAnZGF0YVByb3ZpZGVyJz47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW0+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZSA9ICdsaW5rJywgY2ZnPzogQWN0aW9uTGlua0Rlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHM8SXRlbT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxJdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPih0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7IC8vIGNvcHkgYmFzZSBhY3Rpb25cbiAgICAgICAgZGVzY3JpcHRvci5fdXJsID0gdGhpcy5fdXJsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wYXRoU2VnbWVudHMgPSBbLi4udGhpcy5fcGF0aFNlZ21lbnRzXTtcbiAgICAgICAgZGVzY3JpcHRvci5fcXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fcXVlcnlQYXJhbXN9O1xuICAgICAgICBkZXNjcmlwdG9yLl9xdWVyeVBhcmFtc0hhbmRsaW5nID0gdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fcmVwbGFjZVVybCA9IHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhcmdldCA9IHRoaXMuX3RhcmdldDtcbiAgICAgICAgZGVzY3JpcHRvci5faXNTdHlsZUxpbmsgPSB0aGlzLl9pc1N0eWxlTGluaztcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ActionLinkDescriptorInst } from './action-link.descriptor';\n/**\n * Creates an instance of ActionLinkDescriptorInst with the provided action name and options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionLinkCreateOptsType<Model, ValidationInput>} [opts] - Optional parameters for configuring the action link, including the model and validation type.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} An instance of ActionLinkDescriptorInst initialized with the action name and options.\n */\nexport function actionLink(actionName, opts) {\n return new ActionLinkDescriptorInst(actionName, {\n ...opts,\n model: opts?.model\n });\n}\n/**\n * Generates an ActionLinkDescriptorInst from the provided ActionDescriptorInst.\n *\n * @param {ActionDescriptorInst<Model, any, any, any, ValidationInput>} action - The action descriptor instance that serves as the basis for the action link.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} A newly created ActionLinkDescriptorInst configured with the provided action parameters.\n */\nexport function actionLinkFromAction(action) {\n const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });\n action.copyFieldsTo(descriptor);\n // disable confirmation and notifications\n descriptor.withRunConfirmation(false);\n descriptor.withNotifications(false);\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n descriptor.withSubactionsAsMenu(false);\n return descriptor;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIC8vIGRpc2FibGUgY29uZmlybWF0aW9uIGFuZCBub3RpZmljYXRpb25zXG4gICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhOb3RpZmljYXRpb25zKGZhbHNlKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aEFmdGVyUnVuQWN0aW9uKCk7XG4gICAgZGVzY3JpcHRvci53aXRoT25SdW5FcnJvckFjdGlvbigpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified editor with editor-specific execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {EditorDescriptorInst<EditorModel>} editor - The descriptor of the editor on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The position of action on editor.\n * @return {ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel>} - An instance representing the configured action descriptor for the specified editor and model.\n */\nexport function actionOnEditor(actionName, editor, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFxQix1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUMxQixVQUFrQixFQUNsQixNQUE4QyxFQUM5QyxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFrRCxVQUFVLEVBQUU7UUFDekYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25Qcm92aWRlclR5cGUsIGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2FjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbi8qKlxuICogRGVmaW5lcyBhbiBhY3Rpb24gdG8gYmUgcG9zaXRpb25lZCBvbiBhIHNwZWNpZmllZCBlZGl0b3Igd2l0aCBlZGl0b3Itc3BlY2lmaWMgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBpZGVudGlmeWluZyB0aGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWw+fSBlZGl0b3IgLSBUaGUgZGVzY3JpcHRvciBvZiB0aGUgZWRpdG9yIG9uIHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSBwbGFjZWQgYW5kIGV4ZWN1dGVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodH0gW29wdHMucG9zaXRpb25dIC0gVGhlIHBvc2l0aW9uIG9mIGFjdGlvbiBvbiBlZGl0b3IuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIE1vZGVsLCBFZGl0b3JNb2RlbD59IC0gQW4gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBjb25maWd1cmVkIGFjdGlvbiBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIGVkaXRvciBhbmQgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25PbkVkaXRvcjxNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+LFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgTW9kZWwsIEVkaXRvck1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgIG1vZGVsOiBvcHRzPy5tb2RlbCxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHM/LnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an instance of `ActionEditorDescriptorInst` when positioned on another (parent) editor.\n *\n * @param {string} actionName - The name of the action associated with the editor.\n * @param {EditorDescriptorInst<EditorModel, ParentEditor>} editor - The editor descriptor defining editor on action.\n * @param {Object} [opts] - Optional parameters for configuring the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The descriptor for the model associated with the action.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for the action editor.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The desired position of action on the editor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor>} A configured instance of `ActionEditorDescriptorInst` representing the action editor.\n */\nexport function actionEditorOnEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2VkaXRvci1hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0csT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsVUFBa0IsRUFDbEIsTUFBdUQsRUFDdkQsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBcUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUMxSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZSwgYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0YCB3aGVuIHBvc2l0aW9uZWQgb24gYW5vdGhlciAocGFyZW50KSBlZGl0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGRlZmluaW5nIGVkaXRvciBvbiBhY3Rpb24uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgY29uZmlndXJpbmcgdGhlIGFjdGlvbiBlZGl0b3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBkZXNjcmlwdG9yIGZvciB0aGUgbW9kZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT59IFtvcHRzLnNlcnZpY2VQcm92aWRlcl0gLSBUaGUgc2VydmljZSBwcm92aWRlciB0eXBlIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7QWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0fSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgZGVzaXJlZCBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGhlIGVkaXRvci5cbiAqIEByZXR1cm4ge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gQSBjb25maWd1cmVkIGluc3RhbmNlIG9mIGBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdGAgcmVwcmVzZW50aW5nIHRoZSBhY3Rpb24gZWRpdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25FZGl0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvcj4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KTtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified table with table row execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The descriptor of the table on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table row and model.\n */\nexport function actionOnTableRow(actionName, table, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Defines an action to be positioned on a specified table with table header or footer execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table top and model.\n */\nexport function actionOnTableTop(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy90YWJsZS1hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixVQUFrQixFQUNsQixLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFnRCxVQUFVLEVBQUU7UUFDdkYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsVUFBa0IsRUFDbEIsSUFJQztJQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBOEMsVUFBVSxFQUFFO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbkYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgcm93IGV4ZWN1dGlvbiBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gVGhlIG5hbWUgaWRlbnRpZnlpbmcgdGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSBkZXNjcmlwdG9yIG9mIHRoZSB0YWJsZSBvbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgcGxhY2VkIGFuZCBleGVjdXRlZC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGJlaGF2aW9yLlxuICogQHBhcmFtIHtNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy5tb2RlbF0gLSBUaGUgbW9kZWwgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPn0gW29wdHMuc2VydmljZVByb3ZpZGVyXSAtIFRoZSBzZXJ2aWNlIHByb3ZpZGVyIHR5cGUgZm9yIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgYWN0aW9uIG9uIHRhYmxlLlxuICogQHJldHVybiB7QWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPn0gLSBBbiBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUgcm93IGFuZCBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbk9uVGFibGVSb3c8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICB0YWJsZTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgaGVhZGVyIG9yIGZvb3RlciBleGVjdXRpb24gY29udGV4dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIGlkZW50aWZ5aW5nIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVGFibGVIZWFkZXJ9IFtvcHRzLnBvc2l0aW9uXSAtIFRoZSBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+fSAtIEFuIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZGVzY3JpcHRvciBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZSB0b3AgYW5kIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uT25UYWJsZVRvcDxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyO1xuICAgIH1cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an ActionEditorDescriptorInst for displaying editor action on table row.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The table descriptor instance representing the table on which the action is positioned.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position where the action should be displayed on the table row.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableRow(actionName, editor, table, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Creates and returns an action editor descriptor configured with the given parameters.\n * This is used to define an action editor positioned relative to a table.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of the action on the table.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableTop(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzNHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXRFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLDBCQUEwQixDQUFxRixNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQzFJLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsVUFBa0IsRUFDbEIsTUFBMkQsRUFDM0QsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBbUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUN4SSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBmb3IgZGlzcGxheWluZyBlZGl0b3IgYWN0aW9uIG9uIHRhYmxlIHJvdy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0VkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+fSBlZGl0b3IgLSBUaGUgZWRpdG9yIGRlc2NyaXB0b3IgaW5zdGFuY2UgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBlZGl0b3IgYmVoYXZpb3IuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSB0YWJsZSBkZXNjcmlwdG9yIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgdGFibGUgb24gd2hpY2ggdGhlIGFjdGlvbiBpcyBwb3NpdGlvbmVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGFjdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkIG9uIHRoZSB0YWJsZSByb3cuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsPn0gVGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25UYWJsZVJvdzxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbSwgVGFibGVNb2RlbCwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0+LFxuICAgIHRhYmxlOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIGFueSwgYW55PixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAqIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYW4gYWN0aW9uIGVkaXRvciBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGEgdGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgYW55Pn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlIHJlc3BvbnNpYmxlIGZvciBjb25maWd1cmluZyB0aGUgZWRpdG9yIGJlaGF2aW9yLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGFjdGlvbiBvbiB0aGUgdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZD59IFRoZSBjb25maWd1cmVkIGFjdGlvbiBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvck9uVGFibGVUb3A8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0sIE1vZGVsID0gRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5UYWJsZUhlYWRlcjtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgUGFyZW50RWRpdG9ySXRlbT4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIFBhcmVudEVkaXRvckl0ZW0+KGVkaXRvciwgYWN0aW9uTmFtZSwge1xuICAgICAgICBtb2RlbDogb3B0cz8ubW9kZWwsXG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KTtcbn1cbiJdfQ==","import { ACommonsErrorBase } from '@mediusinc/mng-commons/core';\nexport class CommonsActionError extends ACommonsErrorBase {\n constructor(message, actionName, options) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n this.type = 'CommonsActionError';\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVycm9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUErQyxNQUFNLDZCQUE2QixDQUFDO0FBUzVHLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFPckQsWUFBWSxPQUFlLEVBQUUsVUFBa0IsRUFBRSxPQUFtQztRQUNoRixLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxFQUFFLHFCQUFxQixHQUFHLFVBQVU7WUFDeEMsR0FBRyxPQUFPO1NBQ2IsQ0FBQyxDQUFDO1FBVlMsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBWXhDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7SUFDeEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwRXJyb3JSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge0FDb21tb25zRXJyb3JCYXNlLCBDb21tb25zRXJyb3JCYXNlT3B0aW9ucywgSUNvbW1vbnNBY3Rpb25FcnJvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNBY3Rpb25FcnJvck9wdGlvbnMgZXh0ZW5kcyBDb21tb25zRXJyb3JCYXNlT3B0aW9ucyB7XG4gICAgYWN0aW9uQ29udGV4dD86IElBY3Rpb25Db250ZXh0PGFueSwgYW55LCBhbnk+O1xuICAgIGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tbW9uc0FjdGlvbkVycm9yIGV4dGVuZHMgQUNvbW1vbnNFcnJvckJhc2UgaW1wbGVtZW50cyBJQ29tbW9uc0FjdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdDb21tb25zQWN0aW9uRXJyb3InO1xuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpb25JZDogc3RyaW5nO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbkNvbnRleHQ/OiBJQWN0aW9uQ29udGV4dDxhbnksIGFueT47XG4gICAgcHVibGljIHJlYWRvbmx5IGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhY3Rpb25OYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBDb21tb25zQWN0aW9uRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tb25zQWN0aW9uRXJyb3JfJyArIGFjdGlvbk5hbWUsXG4gICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uSWQgPSBhY3Rpb25OYW1lO1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRleHQgPSBvcHRpb25zPy5hY3Rpb25Db250ZXh0O1xuICAgICAgICB0aGlzLmh0dHBFcnJvciA9IG9wdGlvbnM/Lmh0dHBFcnJvcjtcbiAgICB9XG59XG4iXX0=","import { isObservable, map, throwError } from 'rxjs';\nimport { CommonsInternalError, toObservable } from '@mediusinc/mng-commons/core';\nimport { CommonsActionError } from '../models/action-error.model';\nexport function runFnFromDataProviderOrFallback(ctx, fn, fallback) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\nexport function runFnFromDataProviderOrFail(ctx, fn) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(() => new CommonsActionError(`Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`, ctx.contextLongName, { actionContext: ctx }));\n}\nexport function runGetAllFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll'] === 'function') {\n const tableDataProvider = ctx.dataProvider;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\nexport function runFetchFromDataProvider(ctx, opts) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId\n ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)).pipe(map(res => {\n if (opts?.reason === 'update') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToUpdateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToUpdate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToUpdateItem === 'function') {\n return editorDataProvider.mapFetchItemToUpdateItem(res);\n }\n }\n else if (opts?.reason === 'create') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToCreateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToCreate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToCreateItem === 'function') {\n return editorDataProvider.mapFetchItemToCreateItem(res);\n }\n }\n return res;\n }))\n : null;\n }\n }\n return null;\n}\nexport function runCreateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runUpdateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runDeleteFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.item)) : null; // this is not exactly correct cast as the delete function should never receive Item, but in many cases it ain't so\n }\n }\n return null;\n}\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService(injector, dataProvider) {\n if (dataProvider?.serviceType) {\n const service = injector.get(dataProvider.serviceType, undefined, { optional: true });\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n }\n else {\n return null;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFDLG9CQUFvQixFQUEyQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdoRSxNQUFNLFVBQVUsK0JBQStCLENBQzNDLEdBQWlELEVBQ2pELEVBQW9GLEVBQ3BGLFFBQW9DO0lBRXBDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN2QyxHQUFpRCxFQUNqRCxFQUFvRjtJQUVwRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQ2IsR0FBRyxFQUFFLENBQ0QsSUFBSSxrQkFBa0IsQ0FDbEIsaUVBQWlFLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxN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QUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsbUhBQW1IO1FBQ3hRLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO0lBQ2pILElBQUksWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQVUsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksb0JBQW9CLENBQUMsOEJBQThCLFlBQVksQ0FBQyxXQUFXLHlCQUF5QixDQUFDLENBQUM7UUFDcEgsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIG1hcCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIERhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZSwgdG9PYnNlcnZhYmxlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtDb21tb25zQWN0aW9uRXJyb3J9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhbGxiYWNrPEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2UsIFJldHVybiwgRmFsbGJhY2tSZXR1cm4gPSBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsLFxuICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPEZhbGxiYWNrUmV0dXJuPlxuKTogT2JzZXJ2YWJsZTxSZXR1cm4gfCBGYWxsYmFja1JldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkZuRnJvbURhdGFQcm92aWRlck9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlLCBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsXG4pOiBPYnNlcnZhYmxlPFJldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgbmV3IENvbW1vbnNBY3Rpb25FcnJvcihcbiAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBjb3VsZCBub3QgZXh0cmFjdCBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5fSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gLFxuICAgICAgICAgICAgICAgIGN0eC5jb250ZXh0TG9uZ05hbWUsXG4gICAgICAgICAgICAgICAge2FjdGlvbkNvbnRleHQ6IGN0eH1cbiAgICAgICAgICAgIClcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuR2V0QWxsRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGN0eC5kYXRhUHJvdmlkZXJbJ2dldEFsbCcgYXMga2V5b2Ygb2JqZWN0XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB0YWJsZURhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSVRhYmxlRGF0YVByb3ZpZGVyPEl0ZW0sIGFueT47XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBjdHgucGFyYW1ldGVycz8uZGF0YUxpc3RQYXJhbXMgPz8ge307XG4gICAgICAgIHJldHVybiB0b09ic2VydmFibGUodGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsKHF1ZXJ5UGFyYW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFJ1bkZldGNoRnJvbURhdGFQcm92aWRlck9wdHNUeXBlID0ge1xuICAgIHN0cmljdD86IGJvb2xlYW47XG4gICAgcmVhc29uPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZTtcbn07XG5leHBvcnQgdHlwZSBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlID0gJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdmZXRjaCc7XG5leHBvcnQgZnVuY3Rpb24gcnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihcbiAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICBvcHRzPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyT3B0c1R5cGVcbik6IE9ic2VydmFibGU8SXRlbT4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+O1xuICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5mZXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWRcbiAgICAgICAgICAgICAgICA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZmV0Y2goY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHguc2VydmljZUluc3RhbmNlLCBjdHgucGFyYW1ldGVycy5sb2NhbGUpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cz8ucmVhc29uID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHM/LnN0cmljdCAmJiB0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgbWFwRmV0Y2hUb1VwZGF0ZSBmdW5jdGlvbiBtdXN0IGJlIHByb3ZpZGVkIGluIGRhdGEgcHJvdmlkZXJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdHM/LnJlYXNvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzPy5zdHJpY3QgJiYgdHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYG1hcEZldGNoVG9DcmVhdGUgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCBpbiBkYXRhIHByb3ZpZGVyYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIubWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0ocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQ3JlYXRlRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gdG9PYnNlcnZhYmxlKGVkaXRvckRhdGFQcm92aWRlci5jcmVhdGUoY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkpIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVwZGF0ZUZyb21EYXRhUHJvdmlkZXI8SXRlbSwgUGFyYW1ldGVySXRlbSwgc2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBzZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55LCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyB0b09ic2VydmFibGUoZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5EZWxldGVGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PjtcbiAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnNlcnZpY2VJbnN0YW5jZSwgY3R4LnBhcmFtZXRlcnMuaXRlbSkpIDogbnVsbDsgLy8gdGhpcyBpcyBub3QgZXhhY3RseSBjb3JyZWN0IGNhc3QgYXMgdGhlIGRlbGV0ZSBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgcmVjZWl2ZSBJdGVtLCBidXQgaW4gbWFueSBjYXNlcyBpdCBhaW4ndCBzb1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICpcbiAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBpbnN0YW5jZVxuICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVByb3ZpZGVyU2VydmljZTxJdGVtLCBTZXJ2aWNlPihpbmplY3RvcjogSW5qZWN0b3IsIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4pOiBTZXJ2aWNlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdG9yLmdldDxTZXJ2aWNlPihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUsIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgICAgIGlmICghc2VydmljZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEYXRhIHByb3ZpZGVyIHNlcnZpY2UgdHlwZSAke2RhdGFQcm92aWRlci5zZXJ2aWNlVHlwZX0gY291bGQgbm90IGJlIGluamVjdGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==","/**\n * States of action. Enums ending with \"*Final\" are supposed to be final.\n */\nexport var ActionInstanceStateEnum;\n(function (ActionInstanceStateEnum) {\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerStart\"] = 0] = \"TriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerEnd\"] = 1] = \"TriggerEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationStart\"] = 2] = \"ActivationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationEnd\"] = 3] = \"ActivationEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchStart\"] = 4] = \"FetchStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchEnd\"] = 5] = \"FetchEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchError\"] = 6] = \"FetchError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationStart\"] = 7] = \"RunConfirmationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndAccept\"] = 8] = \"RunConfirmationEndAccept\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndReject\"] = 9] = \"RunConfirmationEndReject\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunStart\"] = 10] = \"RunStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunEnd\"] = 11] = \"RunEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunError\"] = 12] = \"RunError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionStart\"] = 13] = \"NextActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionEnd\"] = 14] = \"NextActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionStart\"] = 15] = \"ErrorActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionEnd\"] = 16] = \"ErrorActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessFinal\"] = 17] = \"FinishSuccessFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishErrorFinal\"] = 18] = \"FinishErrorFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishDismissedFinal\"] = 19] = \"FinishDismissedFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessReactivateFinal\"] = 20] = \"FinishSuccessReactivateFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishComponentDestroyFinal\"] = 21] = \"FinishComponentDestroyFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerStart\"] = 22] = \"FinishRouteUntriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerEndFinal\"] = 23] = \"FinishRouteUntriggerEndFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerTimeoutFinal\"] = 24] = \"FinishRouteUntriggerTimeoutFinal\";\n})(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksdUJBMEJYO0FBMUJELFdBQVksdUJBQXVCO0lBQy9CLHFGQUFZLENBQUE7SUFDWixpRkFBVSxDQUFBO0lBQ1YsMkZBQWUsQ0FBQTtJQUNmLHVGQUFhLENBQUE7SUFDYixpRkFBVSxDQUFBO0lBQ1YsNkVBQVEsQ0FBQTtJQUNSLGlGQUFVLENBQUE7SUFDVixxR0FBb0IsQ0FBQTtJQUNwQiw2R0FBd0IsQ0FBQTtJQUN4Qiw2R0FBd0IsQ0FBQTtJQUN4Qiw4RUFBUSxDQUFBO0lBQ1IsMEVBQU0sQ0FBQTtJQUNOLDhFQUFRLENBQUE7SUFDUiw0RkFBZSxDQUFBO0lBQ2Ysd0ZBQWEsQ0FBQTtJQUNiLDhGQUFnQixDQUFBO0lBQ2hCLDBGQUFjLENBQUE7SUFDZCxrR0FBa0IsQ0FBQTtJQUNsQiw4RkFBZ0IsQ0FBQTtJQUNoQixzR0FBb0IsQ0FBQTtJQUNwQixzSEFBNEIsQ0FBQTtJQUM1QixvSEFBMkIsQ0FBQTtJQUMzQixnSEFBeUIsQ0FBQTtJQUN6QixzSEFBNEIsQ0FBQTtJQUM1Qiw4SEFBZ0MsQ0FBQTtBQUNwQyxDQUFDLEVBMUJXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUEwQmxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0ZXMgb2YgYWN0aW9uLiBFbnVtcyBlbmRpbmcgd2l0aCBcIipGaW5hbFwiIGFyZSBzdXBwb3NlZCB0byBiZSBmaW5hbC5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0ge1xuICAgIFRyaWdnZXJTdGFydCwgLy8gYWN0aW9uIHdhcyB0cmlnZ2VyZWQgKGNsaWNrIG9yIGRpcmVjdClcbiAgICBUcmlnZ2VyRW5kLFxuICAgIEFjdGl2YXRpb25TdGFydCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gc3RhcnRlZCAoZGlyZWN0LCBldmVudCBvciBlZGl0b3IpXG4gICAgQWN0aXZhdGlvbkVuZCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gZW5kZWRcbiAgICBGZXRjaFN0YXJ0LCAvLyBmZXRjaCBzdGFydGVkXG4gICAgRmV0Y2hFbmQsIC8vIGZldGNoIGVuZGVkXG4gICAgRmV0Y2hFcnJvciwgLy8gZmV0Y2ggZXJyb3JcbiAgICBSdW5Db25maXJtYXRpb25TdGFydCwgLy8gY29uZmlybWF0aW9uIGZvciBydW4gaXMgc3RhcnRlZFxuICAgIFJ1bkNvbmZpcm1hdGlvbkVuZEFjY2VwdCwgLy8gY29uZmlybWF0aW9uIGFjY2VwdGVkXG4gICAgUnVuQ29uZmlybWF0aW9uRW5kUmVqZWN0LCAvLyBjb25maXJtYXRpb24gcmVqZWN0ZWRcbiAgICBSdW5TdGFydCwgLy8gYWN0aW9uIHdhcyBydW4gYnkgY2FsbGluZyBtYWluIGZ1bmN0aW9uXG4gICAgUnVuRW5kLCAvLyBhY3Rpb24gcnVuIGZ1bmN0aW9uIGV4ZWN1dGVkXG4gICAgUnVuRXJyb3IsIC8vIGFjdGlvbiBydW4gZnVuY3Rpb24gZXhlY3V0ZWQgd2l0aCBlcnJvclxuICAgIE5leHRBY3Rpb25TdGFydCwgLy8gbmV4dCBhY3Rpb24gc3RhcnRlZFxuICAgIE5leHRBY3Rpb25FbmQsIC8vIG5leHQgYWN0aW9uIGZpbmlzaGVkXG4gICAgRXJyb3JBY3Rpb25TdGFydCwgLy8gZXJyb3IgYWN0aW9uIHN0YXJ0ZWRcbiAgICBFcnJvckFjdGlvbkVuZCwgLy8gZXJyb3IgYWN0aW9uIGZpbmlzaGVkXG4gICAgRmluaXNoU3VjY2Vzc0ZpbmFsLCAvLyBhY3Rpb24gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgRmluaXNoRXJyb3JGaW5hbCwgLy8gYWN0aW9uIGV4ZWN1dGVkIHdpdGggZXJyb3JcbiAgICBGaW5pc2hEaXNtaXNzZWRGaW5hbCwgLy8gYWN0aW9uIHdhcyBkaXNtaXNzZWQgYnkgdXNlclxuICAgIEZpbmlzaFN1Y2Nlc3NSZWFjdGl2YXRlRmluYWwsIC8vIGFjdGlvbiBleGVjdXRlZCBzdWNjZXNzZnVsbHksIGFub3RoZXIgaW5zdGFuY2Ugd2lsbCBkaXJlY3RseSBzdGFydCBmcm9tIHByZXZpb3VzXG4gICAgRmluaXNoQ29tcG9uZW50RGVzdHJveUZpbmFsLCAvLyBhY3Rpb24gd2FzIGRpc21pc3NlZCBieSBkZXN0cm95aW5nIGNvbXBvbmVudCB0aGF0IHdhcyBleGVjdXRpbmcgaXRcbiAgICBGaW5pc2hSb3V0ZVVudHJpZ2dlclN0YXJ0LFxuICAgIEZpbmlzaFJvdXRlVW50cmlnZ2VyRW5kRmluYWwsXG4gICAgRmluaXNoUm91dGVVbnRyaWdnZXJUaW1lb3V0RmluYWxcbn1cbiJdfQ==","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n static { this.READ = '_defaultTwRead'; }\n static { this.ADD = '_defaultTwAdd'; }\n static { this.EDIT = '_defaultTwEdit'; }\n static { this.DELETE = '_defaultTwDelete'; }\n static { this.DETAILS = '_defaultTwDetails'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFnQzthQUNsQixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsUUFBRyxHQUFHLGVBQWUsQ0FBQzthQUN0QixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsV0FBTSxHQUFHLGtCQUFrQixDQUFDO2FBQzVCLFlBQU8sR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmYXVsdCBjYXRlZ29yaWVzIGZvciB0YWJsZXZpZXcgYWN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRCA9ICdfZGVmYXVsdFR3UmVhZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBREQgPSAnX2RlZmF1bHRUd0FkZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUID0gJ19kZWZhdWx0VHdFZGl0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFTEVURSA9ICdfZGVmYXVsdFR3RGVsZXRlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFVEFJTFMgPSAnX2RlZmF1bHRUd0RldGFpbHMnO1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT = new InjectionToken('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QixJQUFJLGNBQWMsQ0FBWSxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVDogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KCdEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVCcpO1xuIl19","import { getDataProviderService, runFnFromDataProviderOrFail } from '../helpers/data-provider-executors';\nexport class DataProviderExecutor {\n runGetAllOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runGetAll.bind(this));\n }\n runFetchOrFail(ctx, fetchReason) {\n return runFnFromDataProviderOrFail(ctx, ctx => this.runFetch(ctx, fetchReason));\n }\n runCreateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runCreate.bind(this));\n }\n runUpdateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runUpdate.bind(this));\n }\n runDeleteOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runDelete.bind(this));\n }\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n getDataProviderService(injector, dataProvider) {\n return getDataProviderService(injector, dataProvider);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQXFDLHNCQUFzQixFQUFFLDJCQUEyQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHM0ksTUFBTSxPQUFnQixvQkFBb0I7SUFDL0IsZUFBZSxDQUFnQyxHQUFrRDtRQUNwRyxPQUFPLDJCQUEyQixDQUFzRCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBYU0sY0FBYyxDQUFnQyxHQUFrRCxFQUFFLFdBQWdEO1FBQ3JKLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQXNCTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO1FBQ3hHLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0RhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlLCBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlLCBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWx9IGZyb20gJy4uL2hlbHBlcnMvZGF0YS1wcm92aWRlci1leGVjdXRvcnMnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhUHJvdmlkZXJFeGVjdXRvciB7XG4gICAgcHVibGljIHJ1bkdldEFsbE9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIERhdGFMaXN0UmVzdWx0PEl0ZW0+PihjdHgsIHRoaXMucnVuR2V0QWxsLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s6IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkZldGNoT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmV0Y2hSZWFzb24/OiBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlKTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgY3R4ID0+IHRoaXMucnVuRmV0Y2goY3R4LCBmZXRjaFJlYXNvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbj86IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGVcbiAgICApOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbjogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZmFsbGJhY2s6IHVuZGVmaW5lZFxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrPzogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj5cbiAgICApOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG5cbiAgICBwdWJsaWMgcnVuQ3JlYXRlT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8SXRlbT4ge1xuICAgICAgICByZXR1cm4gcnVuRm5Gcm9tRGF0YVByb3ZpZGVyT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlLCBJdGVtPihjdHgsIHRoaXMucnVuQ3JlYXRlLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkNyZWF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIHB1YmxpYyBydW5VcGRhdGVPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5VcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuVXBkYXRlPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmFsbGJhY2s6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkRlbGV0ZU9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5EZWxldGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGluc3RhbmNlXG4gICAgICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlPEl0ZW0sIFNlcnZpY2U+KGluamVjdG9yOiBJbmplY3RvciwgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPik6IFNlcnZpY2UgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGdldERhdGFQcm92aWRlclNlcnZpY2UoaW5qZWN0b3IsIGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuIl19","import { EditorDataProviderInst } from './editor.data-provider';\n/**\n * Creates and returns an instance of `EditorDataProviderInst` with the specified options for managing editor data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.createType] - The descriptor defining the create type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.updateType] - The descriptor defining the update type.\n * @return {EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>} An instance of `EditorDataProviderInst` configured according to the provided options.\n */\nexport function editorDataProvider(opts) {\n return new EditorDataProviderInst(opts?.service);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3ItZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FNaEMsSUFLRDtJQUNHLE9BQU8sSUFBSSxzQkFBc0IsQ0FBeUQsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM3SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEYXRhUHJvdmlkZXJJbnN0fSBmcm9tICcuL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0YCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucyBmb3IgbWFuYWdpbmcgZWRpdG9yIGRhdGEuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFRoZSBvcHRpb25zIG9iamVjdCB0byBjb25maWd1cmUgdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLnR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHR5cGUgb2YgbW9kZWwuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IFtvcHRzLnNlcnZpY2VdIC0gVGhlIHNlcnZpY2UgY2xhc3MgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD59IFtvcHRzLmNyZWF0ZVR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIGNyZWF0ZSB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy51cGRhdGVUeXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm4ge0VkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPn0gQW4gaW5zdGFuY2Ugb2YgYEVkaXRvckRhdGFQcm92aWRlckluc3RgIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG59KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\n/**\n * @experimental\n */\nexport class EditorDescriptorNestedObjectWrapper {\n #path;\n #editor;\n constructor(editor, basePath) {\n this.#editor = editor;\n this.#path = basePath;\n }\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this.#editor, this.getNestedPropertyPath(property));\n }\n getNestedPropertyPath(p) {\n return `${this.#path}.${p}`;\n }\n getField(property) {\n return this.#editor.getFieldUnsafe(this.getNestedPropertyPath(property));\n }\n removeField(property) {\n this.#editor.removeFieldUnsafe(this.getNestedPropertyPath(property));\n }\n addField(property) {\n return this.#editor.addFieldUnsafe(this.getNestedPropertyPath(property));\n }\n withFields(...properties) {\n properties.forEach(p => this.#editor.addFieldUnsafe(this.getNestedPropertyPath(p)));\n return this;\n }\n addFieldLookup(property, opts) {\n return this.#editor.addFieldLookupUnsafe(this.getNestedPropertyPath(property), opts);\n }\n addFieldLookupEnum(property, enumModel, options) {\n return this.#editor.addFieldLookupEnumUnsafe(this.getNestedPropertyPath(property), enumModel, options);\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.#editor.addFieldManyEditorUnsafe(this.getNestedPropertyPath(property), tableviewDescriptor);\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.#editor.addFieldManyToManyEditorUnsafe(this.getNestedPropertyPath(property), mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldDescriptor(field) {\n if (!field.property.startsWith(this.#path)) {\n throw new CommonsInternalError(`Field ${field.property} cannot be added to nested object property ${this.#path}: Paths do not match.`);\n }\n this.#editor.addFieldDescriptor(field);\n return this;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3ItbmVzdGVkLW9iamVjdC13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLG9CQUFvQixFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBU3hIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1DQUFtQztJQUc1QyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQTREO0lBRW5FLFlBQVksTUFBaUUsRUFBRSxRQUFnQjtRQUMzRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUNGLFFBQWtCO1FBRWxCLE9BQU8sSUFBSSxtQ0FBbUMsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQ3ZDLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsQ0FBNEI7UUFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW1DO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQUcsVUFBeUM7UUFDbkQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWMsQ0FLWixRQUFrQixFQUFFLElBQTBEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBa0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxRQUFrQixFQUNsQixTQUErQixFQUMvQixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsa0JBQWtCLENBQ2QsUUFBa0IsRUFDbEIsbUJBQWdIO1FBRWhILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBeUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELHdCQUF3QixDQU1wQixRQUFrQixFQUNsQixtQkFBMkQsRUFDM0QscUJBQTZELEVBQzdELGtCQUEyRDtRQUUzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFDcEMsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsQ0FDckIsQ0FBQztJQUNOLENBQUM7SUFFRCxrQkFBa0IsQ0FBc0MsS0FBK0U7UUFDbkksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEtBQUssQ0FBQyxRQUFRLDhDQUE4QyxJQUFJLENBQUMsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNJLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgQ29tbW9uc0ludGVybmFsRXJyb3IsIElUYWJsZURlc2NyaXB0b3IsIElUYWJsZXZpZXdEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0cywgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZCwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBQcm9wZXJ0eU9iamVjdE1vZGVsPlxuICAgIGltcGxlbWVudHMgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIFByb3BlcnR5T2JqZWN0TW9kZWw+XG57XG4gICAgI3BhdGg6IHN0cmluZztcbiAgICAjZWRpdG9yOiBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3I6IElGaWVsZHNNYW5hZ2VXaXRoR2V0RmllbGQ8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgYmFzZVBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLiNlZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMuI3BhdGggPSBiYXNlUGF0aDtcbiAgICB9XG5cbiAgICBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxQcm9wZXJ0eU9iamVjdE1vZGVsW1Byb3BlcnR5XT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgICAgICB0aGlzLiNlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXROZXN0ZWRQcm9wZXJ0eVBhdGgocDoga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy4jcGF0aH0uJHtwIGFzIHN0cmluZ31gO1xuICAgIH1cblxuICAgIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogQUZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLiNlZGl0b3IucmVtb3ZlRmllbGRVbnNhZmUodGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZDxQcm9wZXJ0eUZpZWxkIGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHlGaWVsZF0+LCBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eUZpZWxkXT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eUZpZWxkXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsKVtdKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHRoaXMuI2VkaXRvci5hZGRGaWVsZFVuc2FmZSh0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwKSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhZGRGaWVsZExvb2t1cDxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBGaWVsZE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+ID0gTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxGaWVsZE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICByZXR1cm4gdGhpcy4jZWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHRoaXMuZ2V0TmVzdGVkUHJvcGVydHlQYXRoKHByb3BlcnR5KSwgb3B0cyk7XG4gICAgfVxuXG4gICAgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPixcbiAgICAgICAgb3B0aW9ucz86IEFycmF5PEVudW0+XG4gICAgKTogRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCBlbnVtTW9kZWwsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGFkZEZpZWxkTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFByb3BlcnR5T2JqZWN0TW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBJVGFibGV2aWV3RGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZE1hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cERhdGFQcm92aWRlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBpZiAoIWZpZWxkLnByb3BlcnR5LnN0YXJ0c1dpdGgodGhpcy4jcGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmllbGQgJHtmaWVsZC5wcm9wZXJ0eX0gY2Fubm90IGJlIGFkZGVkIHRvIG5lc3RlZCBvYmplY3QgcHJvcGVydHkgJHt0aGlzLiNwYXRofTogUGF0aHMgZG8gbm90IG1hdGNoLmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2VkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=","export var TableviewEditorTypeEnum;\n(function (TableviewEditorTypeEnum) {\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"None\"] = 0] = \"None\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Details\"] = 1] = \"Details\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Add\"] = 3] = \"Add\";\n})(TableviewEditorTypeEnum || (TableviewEditorTypeEnum = {}));\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBS1g7QUFMRCxXQUFZLHVCQUF1QjtJQUMvQixxRUFBSSxDQUFBO0lBQ0osMkVBQU8sQ0FBQTtJQUNQLHFFQUFJLENBQUE7SUFDSixtRUFBRyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFLbEM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bSB7XG4gICAgTm9uZSxcbiAgICBEZXRhaWxzLFxuICAgIEVkaXQsXG4gICAgQWRkXG59XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FID0gJ19kZWZhdWx0JztcbiJdfQ==","export var FieldSizeEnum;\n(function (FieldSizeEnum) {\n FieldSizeEnum[FieldSizeEnum[\"Small\"] = 0] = \"Small\";\n FieldSizeEnum[FieldSizeEnum[\"Normal\"] = 1] = \"Normal\";\n FieldSizeEnum[FieldSizeEnum[\"Large\"] = 2] = \"Large\";\n})(FieldSizeEnum || (FieldSizeEnum = {}));\nexport var FieldInputTypeEnum;\n(function (FieldInputTypeEnum) {\n FieldInputTypeEnum[FieldInputTypeEnum[\"Hidden\"] = 0] = \"Hidden\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Label\"] = 1] = \"Label\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Text\"] = 2] = \"Text\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Textarea\"] = 3] = \"Textarea\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Number\"] = 4] = \"Number\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Currency\"] = 5] = \"Currency\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Switch\"] = 6] = \"Switch\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Radio\"] = 7] = \"Radio\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Datepicker\"] = 8] = \"Datepicker\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Mask\"] = 9] = \"Mask\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"File\"] = 10] = \"File\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageFile\"] = 11] = \"ImageFile\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageUrl\"] = 12] = \"ImageUrl\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Custom\"] = 13] = \"Custom\";\n})(FieldInputTypeEnum || (FieldInputTypeEnum = {}));\nexport var FieldLookupTypeEnum;\n(function (FieldLookupTypeEnum) {\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dropdown\"] = 0] = \"Dropdown\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Autocomplete\"] = 1] = \"Autocomplete\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dialog\"] = 2] = \"Dialog\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Custom\"] = 3] = \"Custom\";\n})(FieldLookupTypeEnum || (FieldLookupTypeEnum = {}));\nexport var FieldManyToManyEditorTypeEnum;\n(function (FieldManyToManyEditorTypeEnum) {\n FieldManyToManyEditorTypeEnum[FieldManyToManyEditorTypeEnum[\"DialogTableMultiselect\"] = 0] = \"DialogTableMultiselect\";\n})(FieldManyToManyEditorTypeEnum || (FieldManyToManyEditorTypeEnum = {}));\nexport var FieldManyToManyEditorActionEnum;\n(function (FieldManyToManyEditorActionEnum) {\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Add\"] = 0] = \"Add\";\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Delete\"] = 1] = \"Delete\";\n})(FieldManyToManyEditorActionEnum || (FieldManyToManyEditorActionEnum = {}));\nexport var FieldManyEditorTypeEnum;\n(function (FieldManyEditorTypeEnum) {\n FieldManyEditorTypeEnum[FieldManyEditorTypeEnum[\"DialogEditor\"] = 0] = \"DialogEditor\";\n})(FieldManyEditorTypeEnum || (FieldManyEditorTypeEnum = {}));\nexport var FieldManyEditorActionEnum;\n(function (FieldManyEditorActionEnum) {\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"View\"] = 0] = \"View\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Add\"] = 1] = \"Add\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Edit\"] = 2] = \"Edit\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Delete\"] = 3] = \"Delete\";\n})(FieldManyEditorActionEnum || (FieldManyEditorActionEnum = {}));\nexport var FieldGroupTypeEnum;\n(function (FieldGroupTypeEnum) {\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Tab\"] = 0] = \"Tab\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Fieldset\"] = 1] = \"Fieldset\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Logical\"] = 2] = \"Logical\";\n})(FieldGroupTypeEnum || (FieldGroupTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsbURBQUssQ0FBQTtJQUNMLHFEQUFNLENBQUE7SUFDTixtREFBSyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBZVg7QUFmRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLDJEQUFJLENBQUE7SUFDSixtRUFBUSxDQUFBO0lBQ1IsK0RBQU0sQ0FBQTtJQUNOLG1FQUFRLENBQUE7SUFDUiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLHVFQUFVLENBQUE7SUFDViwyREFBSSxDQUFBO0lBQ0osNERBQUksQ0FBQTtJQUNKLHNFQUFTLENBQUE7SUFDVCxvRUFBUSxDQUFBO0lBQ1IsZ0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFmVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBZTdCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixxRUFBUSxDQUFBO0lBQ1IsNkVBQVksQ0FBQTtJQUNaLGlFQUFNLENBQUE7SUFDTixpRUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7QUFFRCxNQUFNLENBQU4sSUFBWSw2QkFFWDtBQUZELFdBQVksNkJBQTZCO0lBQ3JDLHFIQUFzQixDQUFBO0FBQzFCLENBQUMsRUFGVyw2QkFBNkIsS0FBN0IsNkJBQTZCLFFBRXhDO0FBRUQsTUFBTSxDQUFOLElBQVksK0JBR1g7QUFIRCxXQUFZLCtCQUErQjtJQUN2QyxtRkFBRyxDQUFBO0lBQ0gseUZBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywrQkFBK0IsS0FBL0IsK0JBQStCLFFBRzFDO0FBRUQsTUFBTSxDQUFOLElBQVksdUJBRVg7QUFGRCxXQUFZLHVCQUF1QjtJQUMvQixxRkFBWSxDQUFBO0FBQ2hCLENBQUMsRUFGVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBRWxDO0FBRUQsTUFBTSxDQUFOLElBQVkseUJBS1g7QUFMRCxXQUFZLHlCQUF5QjtJQUNqQyx5RUFBSSxDQUFBO0lBQ0osdUVBQUcsQ0FBQTtJQUNILHlFQUFJLENBQUE7SUFDSiw2RUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFLcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLHlEQUFHLENBQUE7SUFDSCxtRUFBUSxDQUFBO0lBQ1IsaUVBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGVudW0gRmllbGRTaXplRW51bSB7XG4gICAgU21hbGwsXG4gICAgTm9ybWFsLFxuICAgIExhcmdlXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkSW5wdXRUeXBlRW51bSB7XG4gICAgSGlkZGVuLFxuICAgIExhYmVsLFxuICAgIFRleHQsXG4gICAgVGV4dGFyZWEsXG4gICAgTnVtYmVyLFxuICAgIEN1cnJlbmN5LFxuICAgIFN3aXRjaCxcbiAgICBSYWRpbyxcbiAgICBEYXRlcGlja2VyLFxuICAgIE1hc2ssXG4gICAgRmlsZSxcbiAgICBJbWFnZUZpbGUsXG4gICAgSW1hZ2VVcmwsXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTG9va3VwVHlwZUVudW0ge1xuICAgIERyb3Bkb3duLFxuICAgIEF1dG9jb21wbGV0ZSxcbiAgICBEaWFsb2csXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtIHtcbiAgICBEaWFsb2dUYWJsZU11bHRpc2VsZWN0XG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0ge1xuICAgIEFkZCxcbiAgICBEZWxldGVcbn1cblxuZXhwb3J0IGVudW0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0ge1xuICAgIERpYWxvZ0VkaXRvclxufVxuXG5leHBvcnQgZW51bSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtIHtcbiAgICBWaWV3LFxuICAgIEFkZCxcbiAgICBFZGl0LFxuICAgIERlbGV0ZVxufVxuXG5leHBvcnQgZW51bSBGaWVsZEdyb3VwVHlwZUVudW0ge1xuICAgIFRhYixcbiAgICBGaWVsZHNldCxcbiAgICBMb2dpY2FsXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ29uZmlnID0gb2JqZWN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkTG9va3VwQ29uZmlnIGV4dGVuZHMgRmllbGRDb25maWcge1xuICAgIHRhYmxlPzoge1xuICAgICAgICBjYXB0aW9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgICAgICBjb2x1bW5BY3Rpb25Db21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgfTtcbn1cbiJdfQ==","export class FieldValidationDescriptor {\n constructor(name, validator, message, options) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n get name() {\n return this._name;\n }\n get validator() {\n return this._validator;\n }\n get message() {\n return this._message;\n }\n get options() {\n return this._options;\n }\n copy() {\n const opt = this._options ? { ...this._options } : undefined;\n return new FieldValidationDescriptor(this._name, this._validator, this._message, opt);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8seUJBQXlCO0lBTWxDLFlBQ0ksSUFBWSxFQUNaLFNBQWdKLEVBQ2hKLE9BQTRFLEVBQzVFLE9BQTJDO1FBRTNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNELE9BQU8sSUFBSSx5QkFBeUIsQ0FBNkMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWVsZEFzeW5jQmFzZVZhbGlkYXRvciwgRmllbGRCYXNlVmFsaWRhdG9yLCBGaWVsZFZhbGlkYXRpb25NZXNzYWdlfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7ZXJyb3JQYXRoPzogUHJvcGVydHl9O1xuXG5leHBvcnQgY2xhc3MgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yPzogRmllbGRCYXNlVmFsaWRhdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4gfCBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZpZWxkQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgRmllbGRBc3luY0Jhc2VWYWxpZGF0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2U8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBvcHQgPSB0aGlzLl9vcHRpb25zID8gey4uLnRoaXMuX29wdGlvbnN9IDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9uYW1lLCB0aGlzLl92YWxpZGF0b3IsIHRoaXMuX21lc3NhZ2UsIG9wdCk7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { FieldSizeEnum } from '../models/field.model';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport const fieldDescriptorEmptyLabelType = '_emptyLabel';\nexport class AGenericFieldDescriptor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor() {\n this._config = {};\n this._formlyConfig = {};\n }\n get config() {\n return this._config;\n }\n get formlyConfig() {\n return this._formlyConfig;\n }\n withConfig(config) {\n this._config = config;\n return this;\n }\n withFormlyConfig(formlyConfig) {\n this._formlyConfig = formlyConfig;\n return this;\n }\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n toJSON() {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\nexport class AFieldDescriptor extends AGenericFieldDescriptor {\n constructor(property) {\n super();\n /** @ignore */ this._required = false;\n /** @ignore */ this._requiredHideLabelMarker = false;\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._validations = [];\n /** @ignore */ this._asyncValidations = [];\n /** @ignore */ this._validationOpts = {};\n /** @ignore */ this._updateOn = 'change';\n /** @ignore */ this._size = FieldSizeEnum.Normal;\n // localization\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._property = property;\n }\n get property() {\n return this._property;\n }\n get label() {\n return this._label;\n }\n get labelUseModelBase() {\n return this._labelUseModelBase;\n }\n get placeholder() {\n return this._placeholder;\n }\n get helpText() {\n return this._helpText;\n }\n get labelInfoTooltip() {\n return this._labelInfoTooltip;\n }\n get labelInfoTooltipIcon() {\n return this._labelInfoTooltipIcon;\n }\n get required() {\n return this._required;\n }\n get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n get disabled() {\n return this._disabled;\n }\n get defaultValue() {\n return this._defaultValue;\n }\n get getter() {\n return this._getter;\n }\n get setter() {\n return this._setter;\n }\n get validations() {\n return this._validations;\n }\n get asyncValidations() {\n return this._asyncValidations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get requiredExpression() {\n return this._requiredExpression;\n }\n get disabledExpression() {\n return this._disabledExpression;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n get updateOn() {\n return this._updateOn;\n }\n get onInit() {\n return this._onInit;\n }\n get onChanges() {\n return this._onChanges;\n }\n get afterContentInit() {\n return this._afterContentInit;\n }\n get afterViewInit() {\n return this._afterViewInit;\n }\n get onDestroy() {\n return this._onDestroy;\n }\n get onValueChange() {\n return this._onValueChange;\n }\n get className() {\n return this._className;\n }\n get size() {\n return this._size;\n }\n get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n /**\n * Set label for field.\n * @param label Full label (i18n path or other string). If null, no label will be used.\n * @param useModelBase If set to true, label will be appended to model's i18n base path.\n */\n withLabel(label, useModelBase) {\n this._label = label;\n this._labelUseModelBase = useModelBase;\n return this;\n }\n withEmptyLabel() {\n this._label = fieldDescriptorEmptyLabelType;\n return this;\n }\n withPlaceholder(placeholder) {\n this._placeholder = placeholder;\n return this;\n }\n withHelpText(helpText) {\n this._helpText = helpText;\n return this;\n }\n /**\n * Sets the label tooltip and optionally a custom icon for the field.\n *\n * @param {string} tooltip - The tooltip text to be displayed.\n * @param {string} [customIcon] - An optional custom icon to be used for the tooltip. If not provided, the default icon is used.\n */\n withLabelInfoTooltip(tooltip, customIcon) {\n this._labelInfoTooltip = tooltip;\n this._labelInfoTooltipIcon = customIcon ?? this._labelInfoTooltipIcon;\n return this;\n }\n withRequired(required = true, requiredExpression, hideLabelMarker = false) {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n withDisabled(disabled = true, disabledExpression) {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n withHidden(hiddenExpression, resetOnHide) {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n withUpdateOn(updateOn) {\n this._updateOn = updateOn;\n return this;\n }\n withOnInit(onInit) {\n this._onInit = onInit;\n return this;\n }\n withOnChanges(onChanges) {\n this._onChanges = onChanges;\n return this;\n }\n withAfterContentInit(afterContentInit) {\n this._afterContentInit = afterContentInit;\n return this;\n }\n withAfterViewInit(afterViewInit) {\n this._afterViewInit = afterViewInit;\n return this;\n }\n withOnDestroy(onDestroy) {\n this._onDestroy = onDestroy;\n return this;\n }\n withOnValueChange(onValueChange) {\n this._onValueChange = onValueChange;\n return this;\n }\n withDefaultValue(defaultValue) {\n this._defaultValue = defaultValue;\n return this;\n }\n withGetter(fn) {\n this._getter = fn;\n return this;\n }\n withSetter(fn) {\n this._setter = fn;\n return this;\n }\n withValidation(name, validator, message) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n removeValidation(name) {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n withAsyncValidation(name, asyncValidator, message) {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n removeAsyncValidation(name) {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n withSize(size = FieldSizeEnum.Normal) {\n this._size = size;\n return this;\n }\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n localized() {\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form,\n fieldFormControl: component.formControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n copyFieldsTo(obj) {\n obj._config = objectDeepCopy(this._config);\n obj._formlyConfig = objectDeepCopy(this._formlyConfig);\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._labelInfoTooltip = this._labelInfoTooltip;\n obj._labelInfoTooltipIcon = this._labelInfoTooltipIcon;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className ? { ...this._className } : undefined;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n obj._validationOpts = { ...this._validationOpts };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYmFzZS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBVyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHakUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsYUFBYSxDQUFDO0FBRTNELE1BQU0sT0FBZ0IsdUJBQXVCO0lBSXpDLGdFQUFnRTtJQUNoRTtRQUpVLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQUd2QixDQUFDO0lBRTFCLElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQW1CO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxZQUErQjtRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sTUFBTTtRQUNaLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxJQUFJO1lBQ1AsT0FBTyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUNGLE1BQU0sVUFBVSxH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QUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLEdBQUcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7R2V0dGVyRm4sIG9iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkQXN5bmNCYXNlVmFsaWRhdG9yLCBGaWVsZEFzeW5jVmFsaWRhdG9yLCBGaWVsZEJhc2VWYWxpZGF0b3IsIEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2UsIEZpZWxkVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0ZpZWxkQ29uZmlnLCBGaWVsZFNpemVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGb3JtRmllbGRFdmVudCwgRm9ybUZpZWxkRXZlbnREYXRhLCBGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWcsIENvbW1vbnNGb3JtbHlIb29rRm59IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjb25zdCBmaWVsZERlc2NyaXB0b3JFbXB0eUxhYmVsVHlwZSA9ICdfZW1wdHlMYWJlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvciB7XG4gICAgcHJvdGVjdGVkIF9jb25maWc6IEZpZWxkQ29uZmlnID0ge307XG4gICAgcHJvdGVjdGVkIF9mb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybWx5Q29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWx5Q29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29uZmlnKGNvbmZpZzogRmllbGRDb25maWcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZvcm1seUNvbmZpZyhmb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Zvcm1seUNvbmZpZyA9IGZvcm1seUNvbmZpZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdG9KU09OIGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGpzb25PYmogPSB7XG4gICAgICAgICAgICAuLi50aGlzLFxuICAgICAgICAgICAgX2VkaXRvcjogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb25PYmpTdHIgPSBKU09OLnN0cmluZ2lmeShqc29uT2JqKTtcbiAgICAgICAgcmV0dXJuIGpzb25PYmpTdHI7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSA9IHtcbiAgICBmb3JjZVNob3dNZXNzYWdlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ2xhc3NOYW1lVHlwZSA9IHtcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBncmlkPzogc3RyaW5nO1xuICAgIHdyYXBwZXI/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29udHJvbD86IHN0cmluZztcbiAgICBpbnB1dD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsVXNlTW9kZWxCYXNlPzogYm9vbGVhbjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsSW5mb1Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9sYWJlbEluZm9Ub29sdGlwSWNvbj86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oZWxwVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkSGlkZUxhYmVsTWFya2VyID0gZmFsc2U7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGVmYXVsdFZhbHVlPzogRmllbGRWYWx1ZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2dldHRlcj86IEdldHRlckZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NldHRlcj86IChpdGVtOiBFZGl0b3JNb2RlbCwgdmFsdWU6IEZpZWxkVmFsdWUpID0+IHZvaWQ7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueSwgYW55Pj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5FeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5SZXNldE9uSGlkZT86IGJvb2xlYW47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF91cGRhdGVPbjogJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JyA9ICdjaGFuZ2UnO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vbkluaXQ/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uQ2hhbmdlcz86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25EZXN0cm95PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uVmFsdWVDaGFuZ2U/OiAoZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4sIHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkQ2xhc3NOYW1lVHlwZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NpemU6IEZpZWxkU2l6ZUVudW0gPSBGaWVsZFNpemVFbnVtLk5vcm1hbDtcblxuICAgIC8vIGxvY2FsaXphdGlvblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PEZvcm1GaWVsZEV2ZW50PEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbFVzZU1vZGVsQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlbHBUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVscFRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbEluZm9Ub29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsSW5mb1Rvb2x0aXBJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGlkZGVuRXhwcmVzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRkZW5SZXNldE9uSGlkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlblJlc2V0T25IaWRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXBkYXRlT24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVPbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uSW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSW5pdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uQ2hhbmdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uQ2hhbmdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlckNvbnRlbnRJbml0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyVmlld0luaXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvbkRlc3Ryb3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRlc3Ryb3k7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvblZhbHVlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplU21hbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLlNtYWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplTGFyZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLkxhcmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgY29weSgpOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbGFiZWwgZm9yIGZpZWxkLlxuICAgICAqIEBwYXJhbSBsYWJlbCBGdWxsIGxhYmVsIChpMThuIHBhdGggb3Igb3RoZXIgc3RyaW5nKS4gSWYgbnVsbCwgbm8gbGFiZWwgd2lsbCBiZSB1c2VkLlxuICAgICAqIEBwYXJhbSB1c2VNb2RlbEJhc2UgSWYgc2V0IHRvIHRydWUsIGxhYmVsIHdpbGwgYmUgYXBwZW5kZWQgdG8gbW9kZWwncyBpMThuIGJhc2UgcGF0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudWxsLCB1c2VNb2RlbEJhc2U/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlID0gdXNlTW9kZWxCYXNlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVtcHR5TGFiZWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gZmllbGREZXNjcmlwdG9yRW1wdHlMYWJlbFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhlbHBUZXh0KGhlbHBUZXh0OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGVscFRleHQgPSBoZWxwVGV4dDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGFiZWwgdG9vbHRpcCBhbmQgb3B0aW9uYWxseSBhIGN1c3RvbSBpY29uIGZvciB0aGUgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9vbHRpcCAtIFRoZSB0b29sdGlwIHRleHQgdG8gYmUgZGlzcGxheWVkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY3VzdG9tSWNvbl0gLSBBbiBvcHRpb25hbCBjdXN0b20gaWNvbiB0byBiZSB1c2VkIGZvciB0aGUgdG9vbHRpcC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpY29uIGlzIHVzZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhMYWJlbEluZm9Ub29sdGlwKHRvb2x0aXA6IHN0cmluZywgY3VzdG9tSWNvbj86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sYWJlbEluZm9Ub29sdGlwID0gdG9vbHRpcDtcbiAgICAgICAgdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSBjdXN0b21JY29uID8/IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXBJY29uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcXVpcmVkKHJlcXVpcmVkID0gdHJ1ZSwgcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhpZGVMYWJlbE1hcmtlciA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICAgIGlmIChyZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGhpZGVMYWJlbE1hcmtlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUsIGRpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChkaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkRXhwcmVzc2lvbiA9IGRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiwgcmVzZXRPbkhpZGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkV4cHJlc3Npb24gPSBoaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB0aGlzLl9oaWRkZW5SZXNldE9uSGlkZSA9IHJlc2V0T25IaWRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVwZGF0ZU9uKHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU9uID0gdXBkYXRlT247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25Jbml0KG9uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uSW5pdCA9IG9uSW5pdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPbkNoYW5nZXMob25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VzID0gb25DaGFuZ2VzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyQ29udGVudEluaXQoYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyQ29udGVudEluaXQgPSBhZnRlckNvbnRlbnRJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyVmlld0luaXQoYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSBhZnRlclZpZXdJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uRGVzdHJveShvbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25WYWx1ZUNoYW5nZShvblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlID0gb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBGaWVsZFZhbHVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZm4/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2V0dGVyKGZuPzogKGl0ZW06IEVkaXRvck1vZGVsLCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRmllbGRWYWxpZGF0b3I8VmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobmFtZSwgdmFsaWRhdG9yIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiwgbWVzc2FnZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2Lm5hbWUgIT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFzeW5jVmFsaWRhdGlvbjxWYWx1ZSA9IEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yPzogRmllbGRBc3luY1ZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LFxuICAgICAgICBtZXNzYWdlPzogRmllbGRWYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgRWRpdG9yVmFsdWU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihuYW1lLCBhc3luY1ZhbGlkYXRvciBhcyBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LCBtZXNzYWdlKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBc3luY1ZhbGlkYXRpb24obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gbmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbk9wdHModmFsaWRhdGlvbk9wdHM6IEZpZWxkVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25PcHRzID0gdmFsaWRhdGlvbk9wdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKG9wdHM/OiBzdHJpbmcgfCBGaWVsZENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBpY29uIHdpdGggdGV4dCBTaG93IGFsbCB0cmFuc2xhdGlvbnMgYWJvdmUgdGhlIGZpZWxkIGFuZCBhZnRlciBjbGlja2luZyBvbiBpdCwgaXQgZGlzcGxheXMgYSBuZXcgZGlhbG9nIHdpdGggdGFibGV2aWV3LlxuICAgICAqIFRoaXMgbmV3IHRhYmxlIHZpZXcgc2hvd3MgYWxsIGF2YWlsYWJsZSB0cmFuc2xhdGlvbnMgZm9yIHNwZWNpZmljIHByb3BlcnR5IGFuZCBhbGxvd3MgZWRpdGluZyBpdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jYWxpemVkKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0RXZlbnQoXG4gICAgICAgIHR5cGU6IEZvcm1GaWVsZEV2ZW50VHlwZUVudW0sXG4gICAgICAgIGNvbXBvbmVudDogRmllbGRUeXBlPENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgYW55Pj4sXG4gICAgICAgIGRhdGE/OiBGb3JtRmllbGRFdmVudERhdGE8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1N1YmplY3QubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudC5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgZm9ybTogY29tcG9uZW50Py5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGZpZWxkRm9ybUNvbnRyb2w6IGNvbXBvbmVudC5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBjb21wb25lbnQuZmllbGQsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXZlbnRzJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBvYmouX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIG9iai5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgb2JqLl9sYWJlbCA9IHRoaXMuX2xhYmVsO1xuICAgICAgICBvYmouX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcCA9IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXA7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSB0aGlzLl9sYWJlbEluZm9Ub29sdGlwSWNvbjtcbiAgICAgICAgb2JqLl9oZWxwVGV4dCA9IHRoaXMuX2hlbHBUZXh0O1xuICAgICAgICBvYmouX3JlcXVpcmVkID0gdGhpcy5fcmVxdWlyZWQ7XG4gICAgICAgIG9iai5fZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZDtcbiAgICAgICAgb2JqLl9kZWZhdWx0VmFsdWUgPSB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgICAgIG9iai5fcmVxdWlyZWRFeHByZXNzaW9uID0gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlbkV4cHJlc3Npb24gPSB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlblJlc2V0T25IaWRlID0gdGhpcy5faGlkZGVuUmVzZXRPbkhpZGU7XG4gICAgICAgIG9iai5fdXBkYXRlT24gPSB0aGlzLl91cGRhdGVPbjtcbiAgICAgICAgb2JqLl9vbkluaXQgPSB0aGlzLl9vbkluaXQ7XG4gICAgICAgIG9iai5fb25DaGFuZ2VzID0gdGhpcy5fb25DaGFuZ2VzO1xuICAgICAgICBvYmouX29uRGVzdHJveSA9IHRoaXMuX29uRGVzdHJveTtcbiAgICAgICAgb2JqLl9hZnRlckNvbnRlbnRJbml0ID0gdGhpcy5fYWZ0ZXJDb250ZW50SW5pdDtcbiAgICAgICAgb2JqLl9hZnRlclZpZXdJbml0ID0gdGhpcy5fYWZ0ZXJWaWV3SW5pdDtcbiAgICAgICAgb2JqLl9vblZhbHVlQ2hhbmdlID0gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgb2JqLl9kaXNhYmxlZEV4cHJlc3Npb24gPSB0aGlzLl9kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lID8gey4uLnRoaXMuX2NsYXNzTmFtZX0gOiB1bmRlZmluZWQ7XG4gICAgICAgIG9iai5fc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgb2JqLl9nZXR0ZXIgPSB0aGlzLl9nZXR0ZXI7XG4gICAgICAgIG9iai5fc2V0dGVyID0gdGhpcy5fc2V0dGVyO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl9hc3luY1ZhbGlkYXRpb25zID0gdGhpcy5fYXN5bmNWYWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgfVxufVxuIl19","import { StyleLevelEnum } from '@mediusinc/mng-commons/core';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldActionDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._wrappers = ['field'];\n this._fieldActionName = property;\n }\n get button() {\n return this._button;\n }\n get runFunction() {\n return this._runFunction;\n }\n get wrappers() {\n return this._wrappers;\n }\n withButton(label, icon = null, level = StyleLevelEnum.Default) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withWrappers(wrappers) {\n this._wrappers = wrappers;\n return this;\n }\n copy() {\n const field = new FieldActionDescriptor(this._property);\n this.copyFieldsTo(field);\n field._button = { ...this._button, style: { ...this._button?.style } };\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXpELE1BQU0sT0FBTyxxQkFBa0UsU0FBUSxnQkFBNEQ7SUFTL0ksWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIWixjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUkxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXFCLEVBQUUsT0FBc0IsSUFBSSxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTztRQUMvRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNILEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZ0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFxQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmllbGRBY3Rpb25Db250ZXh0LCBGaWVsZEFjdGlvblJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWFjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0gKFxuICAgIGN0eDogRmllbGRBY3Rpb25Db250ZXh0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikgPT4gdm9pZCB8IEZpZWxkQWN0aW9uUmVzdWx0IHwgT2JzZXJ2YWJsZTxGaWVsZEFjdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8dm9pZCwgRWRpdG9yTW9kZWwsIHZvaWQsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZEFjdGlvbk5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3I7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogRmllbGRBY3Rpb25SdW5GblR5cGU8RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJpdmF0ZSBfd3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25OYW1lID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBsZXZlbCA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbk9wdHMoYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXcmFwcGVycyh3cmFwcGVyczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSB3cmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2J1dHRvbiA9IHsuLi50aGlzLl9idXR0b24sIHN0eWxlOiB7Li4udGhpcy5fYnV0dG9uPy5zdHlsZX19O1xuICAgICAgICBmaWVsZC5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbj8uYmluZChmaWVsZCk7XG4gICAgICAgIGZpZWxkLl93cmFwcGVycyA9IFsuLi50aGlzLl93cmFwcGVyc107XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME } from '../models/editor.model';\nimport { FieldGroupTypeEnum } from '../models/field.model';\nimport { AGenericFieldDescriptor } from './field-base.descriptor';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport class AFieldGroupDescriptor extends AGenericFieldDescriptor {\n constructor(name) {\n super();\n this._fields = [];\n this._validations = [];\n this._validationOpts = {};\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n removeField(property, filterFunction) {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n get title() {\n return this._title;\n }\n get validations() {\n return this._validations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get name() {\n return this._name;\n }\n get default() {\n return this._default;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n withTitle(title) {\n this._title = title;\n return this;\n }\n withValidation(name, validator, message, opts) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message, opts));\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withHidden(hiddenExpression) {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n}\nexport class FieldTabGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._fields = [];\n }\n get type() {\n return FieldGroupTypeEnum.Tab;\n }\n get fields() {\n return this._fields;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n copy(skipFields = false) {\n const tab = new FieldTabGroupDescriptor(this.name);\n tab._config = objectDeepCopy(this._config);\n tab._formlyConfig = objectDeepCopy(this._formlyConfig);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n tab._validationOpts = { ...this._validationOpts };\n tab._hiddenExpression = this._hiddenExpression;\n return tab;\n }\n}\nexport class FieldGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._type = FieldGroupTypeEnum.Fieldset;\n if (this._default) {\n this.asLogical();\n }\n }\n get type() {\n return this._type;\n }\n get fields() {\n return this._fields;\n }\n /**\n * Styling class name configurations for group.\n */\n get className() {\n return this._className;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n asLogical() {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n copy(skipFields = false) {\n const group = new FieldGroupDescriptor(this.name);\n group._config = objectDeepCopy(this._config);\n group._formlyConfig = objectDeepCopy(this._formlyConfig);\n group._type = this._type;\n group._title = this._title;\n group._hiddenExpression = this._hiddenExpression;\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n group._validationOpts = { ...this._validationOpts };\n group._className = this._className ? { ...this._className } : undefined;\n return group;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC1ncm91cC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLHVCQUF1QixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQzNHLE9BQU8sRUFBQyx5QkFBeUIsRUFBb0MsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRyxNQUFNLE9BQWdCLHFCQUFrRSxTQUFRLHVCQUF1QjtJQVNuSCxZQUFzQixJQUFZO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBTkYsWUFBTyxHQUE4QixFQUFFLENBQUM7UUFDeEMsaUJBQVksR0FBb0QsRUFBRSxDQUFDO1FBQ25FLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQUtwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyx5QkFBeUIsQ0FBQztJQUN2RCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWdCLEVBQUUsY0FBZ0Y7UUFDakgsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdC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SyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztRQUVsRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV0RSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge29iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUV9IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEJhc2VWYWxpZGF0b3IsIEZvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLXZhbGlkYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEdyb3VwVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0NvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGaWVsZERlc2NyaXB0b3IsIEFHZW5lcmljRmllbGREZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZX0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGV9IGZyb20gJy4vZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbmFtZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmYXVsdDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2ZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICBwcm90ZWN0ZWQgX2hpZGRlbkV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHQgPSBuYW1lID09PSBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJGdW5jdGlvbjogKGZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSkgPT4gQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW10ge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSBmaWx0ZXJGdW5jdGlvbih0aGlzLl9maWVsZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBnZXQgdHlwZSgpOiBGaWVsZEdyb3VwVHlwZUVudW07XG5cbiAgICBhYnN0cmFjdCBnZXQgZmllbGRzKCk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW107XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhpZGRlbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGFkZEZpZWxkKGZpZWxkOiBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvcik6IHRoaXM7XG5cbiAgICBhYnN0cmFjdCBjb3B5KCk6IEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZT86IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWwsIFBhcmVudFZhbHVlID0gUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudFZhbHVlPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50VmFsdWU+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxWYWx1ZSwgVmFsdWUsIFBhcmVudFZhbHVlPihuYW1lLCB2YWxpZGF0b3IgYXMgRmllbGRCYXNlVmFsaWRhdG9yPFZhbHVlLCBWYWx1ZSwgUGFyZW50VmFsdWU+IHwgdW5kZWZpbmVkLCBtZXNzYWdlLCBvcHRzKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZhbGlkYXRpb25PcHRzKHZhbGlkYXRpb25PcHRzOiBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uT3B0cyA9IHZhbGlkYXRpb25PcHRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oaWRkZW5FeHByZXNzaW9uID0gaGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9maWVsZHM6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gRmllbGRHcm91cFR5cGVFbnVtLlRhYjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcyBhcyBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZChmaWVsZDogRmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoc2tpcEZpZWxkcyA9IGZhbHNlKTogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgdGFiID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICB0YWIuX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIHRhYi5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgdGFiLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICB0YWIuX2ZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmID0+IGYuY29weShza2lwRmllbGRzKSk7XG4gICAgICAgIHRhYi5fdmFsaWRhdGlvbnMgPSB0aGlzLnZhbGlkYXRpb25zLm1hcCh2ID0+IHYuY29weSgpKTtcbiAgICAgICAgdGFiLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgICAgIHRhYi5faGlkZGVuRXhwcmVzc2lvbiA9IHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG59XG5cbnR5cGUgRmllbGRHcm91cENsYXNzTmFtZVR5cGUgPSB7XG4gICAgZ3JpZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgIHByaXZhdGUgX3R5cGUgPSBGaWVsZEdyb3VwVHlwZUVudW0uRmllbGRzZXQ7XG5cbiAgICBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkR3JvdXBDbGFzc05hbWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG5hbWUpO1xuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5hc0xvZ2ljYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZHMoKTogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzIGFzIEFycmF5PEFGaWVsZERlc2NyaXB0b3I8YW55LCBFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0eWxpbmcgY2xhc3MgbmFtZSBjb25maWd1cmF0aW9ucyBmb3IgZ3JvdXAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTG9naWNhbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IEZpZWxkR3JvdXBUeXBlRW51bS5Mb2dpY2FsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShvcHRzPzogc3RyaW5nIHwgRmllbGRHcm91cENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KHNraXBGaWVsZHMgPSBmYWxzZSk6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICBncm91cC5fY29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fY29uZmlnKTtcbiAgICAgICAgZ3JvdXAuX2Zvcm1seUNvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2Zvcm1seUNvbmZpZyk7XG4gICAgICAgIGdyb3VwLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZ3JvdXAuX3RpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICAgIGdyb3VwLl9oaWRkZW5FeHByZXNzaW9uID0gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcblxuICAgICAgICBpZiAoIXNraXBGaWVsZHMpIHtcbiAgICAgICAgICAgIGdyb3VwLl9maWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAuX3ZhbGlkYXRpb25zID0gdGhpcy52YWxpZGF0aW9ucy5tYXAodiA9PiB2LmNvcHkoKSk7XG4gICAgICAgIGdyb3VwLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG5cbiAgICAgICAgZ3JvdXAuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZSA/IHsuLi50aGlzLl9jbGFzc05hbWV9IDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG59XG4iXX0=","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, getEnumConstantName } from '@mediusinc/mng-commons/core';\nimport { LookupDataProviderInst } from '@mediusinc/mng-commons/form/api';\nimport { FieldLookupTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldLookupGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldLookupDescriptor extends AFieldDescriptor {\n constructor(property, cfg) {\n super(property);\n this._lookupType = FieldLookupTypeEnum.Dropdown;\n this._optionsLabelTranslate = false;\n this._dropdownClassName = 'mng-filter-lookup-dropdown';\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n else {\n this._dataProvider = new LookupDataProviderInst(cfg?.serviceType);\n }\n this._optionsValueProperty = cfg?.optionsValueProperty;\n }\n get lookupType() {\n return this._lookupType;\n }\n get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n get dropdownClassName() {\n return this._dropdownClassName;\n }\n get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n get customComponentName() {\n return this._customComponentName;\n }\n get trimOption() {\n return this._autocompleteInputTrim;\n }\n withOptionsLabelProperty(property, translate = false) {\n return this.withOptionsLabelPropertyUnsafe(property, translate);\n }\n withOptionsLabelPropertyUnsafe(property, translate = false) {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n withOptionsDisabledProperty(property) {\n return this.withOptionsDisabledPropertyUnsafe(property);\n }\n withOptionsDisabledPropertyUnsafe(property) {\n this._optionsDisabledProperty = property;\n return this;\n }\n withOptionsTrackProperty(property) {\n return this.withOptionsTrackPropertyUnsafe(property);\n }\n withOptionsTrackPropertyUnsafe(property) {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n withLookup(lookup) {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n withInputTrim(trimOption = 'both') {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n withConfig(config) {\n return super.withConfig(config);\n }\n asAutocomplete(opts) {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n asDialog(lookupTableDescriptor, tableDataProvider) {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n asCustomComponent(customComponentName) {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n copy() {\n const field = new FieldLookupDescriptor(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\nexport class FieldLookupEnumDescriptor extends FieldLookupDescriptor {\n constructor(property, enumModel, options) {\n super(property, {\n dataProvider: new LookupDataProviderInst(undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n get enumModel() {\n return this._enumModel;\n }\n withDisabledOptions(...disabledOptions) {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n withDefaultValueEnum(defaultValue) {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty]);\n }\n }\n return this;\n }\n asAutocomplete(opts) {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n copy() {\n const field = new FieldLookupEnumDescriptor(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbG9va3VwLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQVFILDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ3RCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFnQixzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBSXRGLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQXlCekQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBc0IscUJBQW9FLEVBQUUsRUFBRTtJQUN0SSxNQUFNLEdBQUcsR0FBcUUsRUFBRSxDQUFDO0lBQ2pGLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4QixJQUFLLHFCQUF1QyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFELHFGQUFxRjtZQUNyRixHQUFHLENBQUMsWUFBWSxHQUFHLHFCQUFpRSxDQUFDO1FBQ3pGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxxQkFBa0QsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLHFCQVNULFNBQVEsZ0JBQXdFO0lBeUJoRixZQUFZLFFBQWdCLEVBQUUsR0FBbUY7UUFDN0csS0FBSyxDQUFDLFFBQWtCLENBQUMsQ0FBQztRQXBCcEIsZ0JBQVcsR0FBd0IsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBRWhFLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUkvQix1QkFBa0IsR0FBRyw0QkFBNEIs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LENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRWUsSUFBSTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLHlCQUF5QixDQUF1QyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekQsS0FBSyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxLQUFLLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRW51bUNvbnN0YW50VHlwZSxcbiAgICBFbnVtVmFsdWUsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBJTG9va3VwRGF0YVByb3ZpZGVyLFxuICAgIElMb29rdXBEZXNjcmlwdG9yLFxuICAgIExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZSxcbiAgICBTZXJ2aWNlQ2xhc3NUeXBlLFxuICAgIGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5LFxuICAgIGZyb21FbnVtVmFsdWVzQXNWYWx1ZUFycmF5LFxuICAgIGdldEVudW1Db25zdGFudE5hbWVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZSwgTG9va3VwRGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RmllbGRMb29rdXBDb25maWcsIEZpZWxkTG9va3VwVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGaWVsZERlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgRmllbGRMb29rdXBEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxFZGl0b3JNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gRmllbGRMb29rdXBEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxcbiAgICBFZGl0b3JNb2RlbCxcbiAgICBTZXJ2aWNlLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnNcbj4gJiB7XG4gICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZExvb2t1cERlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzID0ga2V5b2YgRmllbGRNb2RlbCwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIEZpZWxkTW9kZWw+ID0ge1xuICAgIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICBkYXRhUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlID0ge1xuICAgIG9wZW5PbkZvY3VzPzogYm9vbGVhbjtcbiAgICBpbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIHNlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgICBhdXRvQ2xlYXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTG9va3VwR2V0UHJvdmlkZXJDZmdPYmogPSA8RmllbGRNb2RlbCwgU2VydmljZT4oc2VydmljZU9yRGF0YVByb3ZpZGVyPzogRmllbGRMb29rdXBQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEZpZWxkTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcuZGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuZXhwb3J0IGNsYXNzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxcbiAgICAgICAgRmllbGRNb2RlbCxcbiAgICAgICAgRWRpdG9yTW9kZWwsXG4gICAgICAgIFNlcnZpY2UgPSBhbnksXG4gICAgICAgIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsLFxuICAgICAgICBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCxcbiAgICAgICAgU29ydHMgPSBrZXlvZiBGaWVsZE1vZGVsLFxuICAgICAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgRmllbGRNb2RlbFxuICAgID5cbiAgICBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPlxuICAgIGltcGxlbWVudHMgSUxvb2t1cERlc2NyaXB0b3I8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUHJvdmlkZXI6IElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7IC8vIHRoaXMgZGVmaW5lcyBWVCFcblxuICAgIHByb3RlY3RlZCBfbG9va3VwVHlwZTogRmllbGRMb29rdXBUeXBlRW51bSA9IEZpZWxkTG9va3VwVHlwZUVudW0uRHJvcGRvd247XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zTGFiZWxQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zVHJhY2tQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfZHJvcGRvd25DbGFzc05hbWUgPSAnbW5nLWZpbHRlci1sb29rdXAtZHJvcGRvd24nO1xuXG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVPcGVuT25Gb2N1cz86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlQXV0b0NsZWFyPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZVNlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZUlucHV0VHJpbT86IElucHV0VHJpbVR5cGU7XG5cbiAgICBwcm90ZWN0ZWQgX2RpYWxvZ1RhYmxlRGVzY3JpcHRvcj86IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+O1xuICAgIHByb3RlY3RlZCBfZGlhbG9nVGFibGVEYXRhUHJvdmlkZXI/OiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgYW55LCBhbnksIGFueT47XG5cbiAgICBwcm90ZWN0ZWQgX2N1c3RvbUNvbXBvbmVudE5hbWU/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nLCBjZmc/OiBGaWVsZExvb2t1cERlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBMb29rdXBEYXRhUHJvdmlkZXJJbnN0KGNmZz8uc2VydmljZVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPSBjZmc/Lm9wdGlvbnNWYWx1ZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1ZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNEaXNhYmxlZFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zVHJhY2tQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlubGluZVNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF1dG9DbGVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZVNlbGVjdEZpcnN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlU2VsZWN0Rmlyc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkcm9wZG93bkNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dUYWJsZURhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnROYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdHJpbU9wdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlucHV0VHJpbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCB0cmFuc2xhdGUgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCB0cmFuc2xhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZywgdHJhbnNsYXRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gdHJhbnNsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNEaXNhYmxlZFByb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zRGlzYWJsZWRQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0Rpc2FibGVkUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zVHJhY2tQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc1RyYWNrUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwKGxvb2t1cD86IExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhMb29rdXAobG9va3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJbnB1dFRyaW0odHJpbU9wdGlvbjogSW5wdXRUcmltVHlwZSA9ICdib3RoJyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVJbnB1dFRyaW0gPSB0cmltT3B0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aENvbmZpZyhjb25maWc6IEZpZWxkTG9va3VwQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHJldHVybiBzdXBlci53aXRoQ29uZmlnKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQXV0b2NvbXBsZXRlKG9wdHM/OiBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFR5cGUgPSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlQXV0b0NsZWFyID0gb3B0cz8uYXV0b0NsZWFyO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVTZWxlY3RGaXJzdCA9IG9wdHM/LnNlbGVjdEZpcnN0O1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cyA9IG9wdHM/Lm9wZW5PbkZvY3VzO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSBvcHRzPy5pbmxpbmVTZWFyY2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0RpYWxvZzxTb3J0cyA9IGtleW9mIEZpZWxkTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBGaWVsZE1vZGVsPihcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICAgICAgdGFibGVEYXRhUHJvdmlkZXI/OiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgYW55LCBTb3J0cywgRmlsdGVycz5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nO1xuICAgICAgICB0aGlzLl9kaWFsb2dUYWJsZURlc2NyaXB0b3IgPSBsb29rdXBUYWJsZURlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyID0gdGFibGVEYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1c3RvbUNvbXBvbmVudChjdXN0b21Db21wb25lbnROYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpZWxkTG9va3VwVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnROYW1lID0gY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbCwgU29ydHMsIEZpbHRlcnM+KHRoaXMuX3Byb3BlcnR5LCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHk7XG4gICAgICAgIGZpZWxkLl9kcm9wZG93bkNsYXNzTmFtZSA9IHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICBmaWVsZC5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICAgICAgZmllbGQuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaCA9IHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICAgICAgZmllbGQuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvciA9IHRoaXMuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxcbiAgICBFbnVtVmFsdWUsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIEVudW1Db25zdGFudFR5cGUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwsXG4gICAgbmV2ZXIsXG4gICAgbmV2ZXJcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1Nb2RlbDogRW51bURlc2NyaXB0b3I8RW51bT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uRW51bVZhbHVlczogRW51bVZhbHVlW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogRW51bVtdIHwgdW5kZWZpbmVkOyAvLyB1c2VkIHRvIGVuc3VyZSBwcm9wZXIgY29weWluZ1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5LCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IG5ldyBMb29rdXBEYXRhUHJvdmlkZXJJbnN0PEVudW1WYWx1ZSwgdW5kZWZpbmVkLCBuZXZlciwgbmV2ZXIsIHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiAndmFsdWUnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9lbnVtTW9kZWwgPSBlbnVtTW9kZWw7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9vcHRpb25FbnVtVmFsdWVzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPih0aGlzLl9lbnVtTW9kZWwudHlwZSwgb3B0aW9ucywgdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKVxuICAgICAgICAgICAgOiBmcm9tRW51bUNvbnN0YW50c0FzVmFsdWVBcnJheSh0aGlzLl9lbnVtTW9kZWwudHlwZSwgdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy53aXRoTG9va3VwKCgpID0+IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMpO1xuICAgICAgICB0aGlzLndpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eSgndGl0bGUnLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgIT09IG51bGwpO1xuICAgICAgICB0aGlzLndpdGhPcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSgnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1Nb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1Nb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkT3B0aW9ucyguLi5kaXNhYmxlZE9wdGlvbnM6IEFycmF5PEVudW1Db25zdGFudFR5cGU+KTogdGhpcyB7XG4gICAgICAgIGZvciAoY29uc3QgZGlzYWJsZWRPcHRpb24gb2YgZGlzYWJsZWRPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNhYmxlZE9wdGlvblZhbHVlID0gdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlID8gZ2V0RW51bUNvbnN0YW50TmFtZSh0aGlzLl9lbnVtTW9kZWwudHlwZSwgZGlzYWJsZWRPcHRpb24pIDogZGlzYWJsZWRPcHRpb247XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWRPcHRpb25WYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMuZmluZChvID0+IG8udmFsdWUgPT09IGRpc2FibGVkT3B0aW9uVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWVFbnVtKGRlZmF1bHRWYWx1ZTogRW51bUNvbnN0YW50VHlwZSk6IHRoaXMge1xuICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9uVmFsdWUgPSB0aGlzLl9lbnVtTW9kZWwubmFtZUFzVmFsdWUgPyBnZXRFbnVtQ29uc3RhbnROYW1lKHRoaXMuX2VudW1Nb2RlbC50eXBlLCBkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICBpZiAoZGVmYXVsdE9wdGlvblZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9vcHRpb25FbnVtVmFsdWVzLmZpbmQobyA9PiBvLnZhbHVlID09PSBkZWZhdWx0T3B0aW9uVmFsdWUpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMud2l0aERlZmF1bHRWYWx1ZShvcHRpb25bdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGFzQXV0b2NvbXBsZXRlKG9wdHM/OiBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHN1cGVyLmFzQXV0b2NvbXBsZXRlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBvcGVuT25Gb2N1czogb3B0cz8ub3Blbk9uRm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNlYXJjaDogb3B0cz8uaW5saW5lU2VhcmNoID8/IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fZW51bU1vZGVsLCB0aGlzLl9vcHRpb25zKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { TableDataProviderInst } from '@mediusinc/mng-commons/table/api';\nimport { FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldManyToManyGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider;\n }\n else {\n cfg.lookupServiceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldManyToManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, mainTableDescriptor, lookupTableDescriptor, cfg) {\n super(property);\n this._fieldType = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n this._actions = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n this._hasLookupExcludeValues = false;\n this._excludeFilterProperty = '';\n this._excludeValueProperty = '';\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n }\n else {\n this._lookupTableDataProvider = new TableDataProviderInst(cfg?.lookupServiceType);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get actions() {\n return this._actions;\n }\n get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n withLookup(fn) {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n withActions(actions = []) {\n this.actions.push(...actions);\n return this;\n }\n withLookupExclude(filterProperty, valueProperty, hasLookupExclude = true) {\n return this.withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude);\n }\n withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude = true) {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n copy() {\n const field = new FieldManyToManyEditorDescriptor(this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy(), {\n lookupDataProvider: this.lookupTableDataProvider\n });\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\nexport class FieldManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, tableviewDescriptor) {\n super(property);\n this._fieldType = FieldManyEditorTypeEnum.DialogEditor;\n this._fieldActions = [];\n // we allow any action (item is not defined, the same goes for other generics). Developer should define types depending on action's specifics\n this._actions = [];\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n get fieldType() {\n return this._fieldType;\n }\n get fieldActions() {\n return this._fieldActions;\n }\n get actions() {\n return this._actions;\n }\n get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n withFieldAction(action) {\n this._fieldActions.push(action);\n return this;\n }\n withFieldActions(actions) {\n this._fieldActions = actions;\n return this;\n }\n withAction(action) {\n this._actions.push(action);\n return this;\n }\n copy() {\n const field = new FieldManyEditorDescriptor(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n field._actions = this._actions.map(a => a.copy());\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFueS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLW1hbnkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9ELHFCQUFxQixFQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBSS9JLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSwrQkFBK0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pKLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBV3pELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQXNCLHFCQUE4RSxFQUFFLEVBQUU7SUFDcEosTUFBTSxHQUFHLEdBQStFLEVBQUUsQ0FBQztJQUMzRixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBdUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxRCxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLGtCQUFrQixHQUFHLHFCQUFnRSxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLGlCQUFpQixHQUFHLHFCQUFrRCxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQWtJLFNBQVEsZ0JBS3RKO0lBVUcsWUFDSSxRQUFnQixFQUNoQixtQkFBb0QsRUFDcEQscUJBQXNELEVBQ3RELEdBQTZFO1FBRTdFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVpaLGVBQVUsR0FBa0MsNkJBQTZCLENBQUMsc0JBQXNCLENBQUM7UUFDakcsYUFBUSxHQUEyQyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQyxNQUFNLENBQUMs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bnQiOlsiaW1wb3J0IHtJRGF0YVByb3ZpZGVyLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckluc3QsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0sIEZpZWxkTWFueUVkaXRvclR5cGVFbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBsb29rdXBTZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgbG9va3VwRGF0YVByb3ZpZGVyPzogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRNYW55VG9NYW55RWRpdG9yUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqID0gPEZpZWxkTW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEZpZWxkTWFueVRvTWFueUVkaXRvclByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPikgPT4ge1xuICAgIGNvbnN0IGNmZzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcubG9va3VwRGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNmZy5sb29rdXBTZXJ2aWNlVHlwZSA9IHNlcnZpY2VPckRhdGFQcm92aWRlciBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSA9IGFueSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD47IC8vIHRhYmxlIGRlc2NyaXB0b3IgZm9yIG1haW4gdGFibGUgY29tcG9uZW50XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+OyAvLyB0YWJsZSBkZXNjcmlwdG9yIGZvciB3aGVyZSBzZWxlY3Qgd2lsbCBiZSBhcHBsaWVkXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55VG9NYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nVGFibGVNdWx0aXNlbGVjdDtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCwgRmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bS5EZWxldGVdO1xuICAgIHByaXZhdGUgX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSAnJztcbiAgICBwcml2YXRlIF9leGNsdWRlVmFsdWVQcm9wZXJ0eSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgY2ZnPzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmllbGRNb2RlbCwgU2VydmljZT5cbiAgICApIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yID0gbWFpblRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yID0gbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuXG4gICAgICAgIGlmIChjZmc/Lmxvb2t1cERhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBjZmcubG9va3VwRGF0YVByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0KGNmZz8ubG9va3VwU2VydmljZVR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZUZpbHRlclByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhjbHVkZUZpbHRlclByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZVZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGNsdWRlVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1haW5UYWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXBUYWJsZURhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cChmbjogVGFibGVEYXRhUHJvdmlkZXJHZXRBbGxGblR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIud2l0aEdldEFsbChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9ucyhhY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKC4uLmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cEV4Y2x1ZGUoZmlsdGVyUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIHZhbHVlUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhMb29rdXBFeGNsdWRlVW5zYWZlKGZpbHRlclByb3BlcnR5IGFzIHN0cmluZywgdmFsdWVQcm9wZXJ0eSBhcyBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwRXhjbHVkZVVuc2FmZShmaWx0ZXJQcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZVByb3BlcnR5OiBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBoYXNMb29rdXBFeGNsdWRlO1xuICAgICAgICB0aGlzLl9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSBmaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHkgPSB2YWx1ZVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4oXG4gICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eSxcbiAgICAgICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3IuY29weSgpLFxuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yLmNvcHkoKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IHRoaXMubG9va3VwVGFibGVEYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gdGhpcy5faGFzTG9va3VwRXhjbHVkZVZhbHVlcztcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSA9IHRoaXMuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nRWRpdG9yO1xuICAgIHByaXZhdGUgX2ZpZWxkQWN0aW9uczogQXJyYXk8RmllbGRNYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXTtcbiAgICAvLyB3ZSBhbGxvdyBhbnkgYWN0aW9uIChpdGVtIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2FtZSBnb2VzIGZvciBvdGhlciBnZW5lcmljcykuIERldmVsb3BlciBzaG91bGQgZGVmaW5lIHR5cGVzIGRlcGVuZGluZyBvbiBhY3Rpb24ncyBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IgPSB0YWJsZXZpZXdEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMucHVzaChGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLlZpZXcsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uQWRkLCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkVkaXQsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uRGVsZXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkQWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3RGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLnRhYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRm9yQ3JlYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5hZGRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JSZWFkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRm9yVXBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRBY3Rpb24oYWN0aW9uOiBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRBY3Rpb25zKGFjdGlvbnM6IEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW1bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5jb3B5KCkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhmaWVsZCk7XG4gICAgICAgIGZpZWxkLl9maWVsZFR5cGUgPSB0aGlzLl9maWVsZFR5cGU7XG4gICAgICAgIGZpZWxkLl9maWVsZEFjdGlvbnMgPSB0aGlzLl9maWVsZEFjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9hY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5tYXAoYSA9PiBhLmNvcHkoKSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray } from '@mediusinc/mng-commons/core';\nimport { FieldInputTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldInputDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._fieldType = FieldInputTypeEnum.Text;\n this._numberUseGrouping = true;\n this._currencyDisplay = 'symbol';\n // radio specific properties\n this._radioOptions = [];\n }\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n asType(fieldType, ...args) {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(args[0]);\n case FieldInputTypeEnum.Number:\n return this.asNumber(args[0]);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(args[0]);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(args[0]);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0]);\n case FieldInputTypeEnum.File:\n return this.asFile(args[0]);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(args[0]);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(args[0]);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get rows() {\n return this._rows;\n }\n get numberMin() {\n return this._numberMin;\n }\n get numberMax() {\n return this._numberMax;\n }\n get numberStep() {\n return this._numberStep;\n }\n get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n get numberPrefix() {\n return this._numberPrefix;\n }\n get numberSuffix() {\n return this._numberSuffix;\n }\n get radioOptions() {\n return this._radioOptions;\n }\n get radioLabelClassName() {\n return this._radioLabelClassName;\n }\n get datePickerFormat() {\n return this._datePickerFormat;\n }\n get datePickerMin() {\n return this._datePickerMin;\n }\n get datePickerMax() {\n return this._datePickerMax;\n }\n get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n get maxLength() {\n return this._maxLength;\n }\n get minLength() {\n return this._minLength;\n }\n get pattern() {\n return this._pattern;\n }\n get textTrim() {\n return this._textTrim;\n }\n get emptyValue() {\n return this._emptyValue;\n }\n get validationEmail() {\n return this._validationEmail;\n }\n get mask() {\n return this._mask;\n }\n get slotChar() {\n return this._slotChar;\n }\n get fileMultiple() {\n return this._fileMultiple;\n }\n get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n get fileAccept() {\n return this._fileAccept;\n }\n get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n get imagePreview() {\n return this._imagePreview;\n }\n get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n get customComponentType() {\n return this._customComponentType;\n }\n get customComponentInputs() {\n return this._customComponentInputs;\n }\n get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n get locale() {\n return this._locale;\n }\n get currency() {\n return this._currency;\n }\n get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n get currencyDisplay() {\n return this._currencyDisplay;\n }\n asHidden() {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n asLabel() {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n asText(opts) {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts)\n .withTextValidationEmail(opts?.email ?? false)\n .withTextCommonOpts(opts)\n .withInputCommonOpts(opts);\n }\n asTextarea(opts) {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts).withTextCommonOpts(opts).withInputCommonOpts(opts);\n }\n asNumber(opts) {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withNumberDisplay(opts)\n .withInputCommonOpts(opts);\n }\n asCurrency(opts) {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? opts.currencyProperty : undefined\n }).withInputCommonOpts(opts);\n }\n asCurrencyUnsafe(opts) {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withInputCommonOpts(opts);\n }\n asSwitch() {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n asRadio(options, optionsTitlePath) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => ({ value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}` }));\n return this;\n }\n asRadioFromEnum(enumModel, values) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n asDatePicker(opts) {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n return this.withDateValidation(opts).withDatePickerDisplay(opts).withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n }\n asMask(opts) {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = opts?.mask;\n this._slotChar = opts?.slotChar;\n return this.withInputCommonOpts(opts);\n }\n asFile(opts) {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n asImageFile(opts) {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n asImageUrl(opts) {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n asCustomComponent(component, opts) {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n withNumberValidation(opts) {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n withLocale(locale) {\n this._locale = locale;\n return this;\n }\n withNumberFractions(opts) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n withNumberGrouping(useGrouping = true) {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n withNumberDisplay(opts) {\n this._numberPrefix = opts?.prefix;\n this._numberSuffix = opts?.suffix;\n return this;\n }\n withTextareaRows(rows) {\n this._rows = rows;\n return this;\n }\n withTextValidation(opts) {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n /**\n * Common options for text input element (i.e. value value trimming).\n * @param opts\n */\n withTextCommonOpts(opts) {\n this._textTrim = opts?.trim;\n return this;\n }\n /**\n * Common options for input element (i.e. value on empty input).\n * @param opts\n */\n withInputCommonOpts(opts) {\n this._emptyValue = opts?.emptyValue;\n return this;\n }\n withDatePickerDisplay(opts) {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n withDateValidation(opts) {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n withRadioOptions(opts) {\n this._radioLabelClassName = opts.labelClassName;\n return this;\n }\n withDateValue(opts) {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n withTextValidationEmail(email = true) {\n this._validationEmail = email;\n return this;\n }\n withFileOnSelectHandler(fn) {\n this._fileOnSelectHandler = fn;\n return this;\n }\n copy() {\n const field = new FieldInputDescriptor(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._numberPrefix = this._numberPrefix;\n field._numberSuffix = this._numberSuffix;\n field._radioOptions = [...this._radioOptions];\n field._radioLabelClassName = this._radioLabelClassName;\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._textTrim = this._textTrim;\n field._emptyValue = this._emptyValue;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBbUIsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUt4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQWdJekQsTUFBTSxPQUFPLG9CQUFpSSxTQUFRLGdCQUtySjtJQXFFRyxZQUFZLFFBQWdCO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQXJFWixlQUFVLEdBQXVCLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQVl6RCx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFPMUIscUJBQWdCLEdBQStCLFFBQVEsQ0FBQztRQUdoRSw0QkFBNEI7UUFDcEIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO0lBK0M5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUE2QixFQUFFLEdBQUcsSUFBVztRQUN2RCxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2hCLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO2dCQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixLQUFLLGtCQUFrQixDQUFDLFFBQVE7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEs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QUksQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsS0FBSyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SXRlbU9yT2JzZXJ2YWJsZSwgZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXksIGZyb21FbnVtVmFsdWVzQXNWYWx1ZUFycmF5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbXB0eVZhbHVlVHlwZSwgSW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtGaWVsZEltYWdlUHJldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1jdXN0b20tZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtSYWRpb1ZhbHVlfSBmcm9tICcuLi9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSA9IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBGaWxlIHwgRmlsZVtdO1xuXG50eXBlIEZpZWxkSW5wdXRPcHRzVHlwZSA9IHtcbiAgICBlbXB0eVZhbHVlPzogRW1wdHlWYWx1ZVR5cGU7XG59O1xuXG50eXBlIEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUgPSB7XG4gICAgdHJpbT86IElucHV0VHJpbVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dE9wdHNUeXBlID0ge1xuICAgIGVtYWlsPzogYm9vbGVhbjtcbn0gJiBGaWVsZElucHV0VGV4dFZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1VGV4dEJhc2VPcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSA9IHtcbiAgICByb3dzPzogbnVtYmVyO1xufSAmIEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlICZcbiAgICBGaWVsZElucHVUZXh0QmFzZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUgPSB7XG4gICAgbWFzazogc3RyaW5nO1xuICAgIHNsb3RDaGFyPzogc3RyaW5nO1xufSAmIEZpZWxkSW5wdXRPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dERhdGVQaWNrZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIG1pbj86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBtYXg/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0Q3VycmVuY3lPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7XG4gICAgY3VycmVuY3lQcm9wZXJ0eT86IFByb3BlcnR5O1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xufSAmIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJPcHRzVHlwZSA9IEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBzdGVwPzogbnVtYmVyO1xuICAgIGF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IEZpZWxkSW5wdXREYXRlUGlja2VyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ICZcbiAgICBGaWVsZERhdGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGREYXRlT3B0c1R5cGUgPSB7XG4gICAgYXNEYXRlT2JqPzogYm9vbGVhbjtcbiAgICB1dGM/OiBib29sZWFuO1xuICAgIG5vVGltZT86IGJvb2xlYW47XG4gICAgbm9UaW1lWm9uZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIGFjY2VwdD86IHN0cmluZztcbiAgICBvbkZpbGVTZWxlY3RIYW5kbGVyRm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZTtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgICBwcmV2aWV3QWxsb3dTdmc/OiBib29sZWFuO1xuICAgIHByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRJbWFnZVVybE9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICAgIGlucHV0VmlzaWJsZU9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZpZXdBbGxvd1N2Zz86IGJvb2xlYW47XG4gICAgcHJldmlld0NvbXBvbmVudD86IFR5cGU8RmllbGRJbWFnZVByZXZpZXdDb21wb25lbnQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dENvbXBvbmVudE9wdHMgPSB7XG4gICAgZmllbGRXcmFwcGVycz86IHN0cmluZ1tdO1xuICAgIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSA9IChmaWxlOiBGaWxlW10gfCBudWxsLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPiA9IChcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VmFsdWU+LFxuICAgIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPlxuKSA9PiBJdGVtT3JPYnNlcnZhYmxlPERhdGUgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY2xhc3MgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBGaWVsZElucHV0RGVzY3JpcHRvclR5cGUsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSBfZmllbGRUeXBlOiBGaWVsZElucHV0VHlwZUVudW0gPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcblxuICAgIC8vIHRleHRhcmVhIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9yb3dzPzogbnVtYmVyO1xuXG4gICAgLy8gbnVtYmVyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9udW1iZXJNaW4/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyTWF4PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclN0ZXA/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyQXV0b0NvcnJlY3Q/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX251bWJlck1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlck1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclVzZUdyb3VwaW5nID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbnVtYmVyUHJlZml4Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX251bWJlclN1ZmZpeD86IHN0cmluZztcblxuICAgIC8vIGN1cnJlbmN5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9jdXJyZW5jeT86IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnID0gJ3N5bWJvbCc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyByYWRpbyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfcmFkaW9PcHRpb25zOiBBcnJheTxSYWRpb1ZhbHVlPiA9IFtdO1xuICAgIHByaXZhdGUgX3JhZGlvTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICAvLyBkYXRlcGlja2VyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJNaW4/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlck1heD86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyU2hvd1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJTaG93U2Vjb25kcz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlVXRjPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaj86IGJvb2xlYW47XG5cbiAgICAvLyBpbnB1dCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX21pbkxlbmd0aD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9wYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHByaXZhdGUgX3ZhbGlkYXRpb25FbWFpbD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfdGV4dFRyaW0/OiBJbnB1dFRyaW1UeXBlO1xuXG4gICAgLy8gbWFzayBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWFzaz86IHN0cmluZztcbiAgICBwcml2YXRlIF9zbG90Q2hhcj86IHN0cmluZztcblxuICAgIC8vIGZpbGUgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ZpbGVNdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZmlsZU1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX2ZpbGVBY2NlcHQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsZU9uU2VsZWN0SGFuZGxlcj86IEZpZWxkSW5wdXRGaWxlT25TZWxlY3RIYW5kbGVyRm5UeXBlO1xuXG4gICAgLy8gaW1hZ2Ugc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlldz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfaW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlld0FsbG93U3ZnPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pbWFnZVByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50PjtcblxuICAgIC8vIGN1c3RvbSBjb21wb25lbnQgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPEFGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PjtcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRJbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzPzogc3RyaW5nW107XG5cbiAgICAvLyB2YWx1ZSBjb250cm9sXG4gICAgcHJpdmF0ZSBfZW1wdHlWYWx1ZT86IEVtcHR5VmFsdWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgZmllbGQgdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSBmaWVsZCB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGZpZWxkIChvcHRpb25hbClcbiAgICAgKi9cbiAgICBwdWJsaWMgYXNUeXBlKGZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSGlkZGVuKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0xhYmVsKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1RleHRhcmVhKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTnVtYmVyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXJyZW5jeShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1N3aXRjaCgpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNSYWRpbyhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlUGlja2VyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc01hc2soYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0ltYWdlRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSW1hZ2VVcmwoYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzVGV4dChhcmdzWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdGVwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlckF1dG9Db3JyZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW5GcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlclVzZUdyb3VwaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJQcmVmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdWZmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb09wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb09wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb0xhYmVsQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFkaW9MYWJlbENsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlck1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyTWF4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlck1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93VGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93U2Vjb25kcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZVV0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlTm9UaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluTGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0dGVybigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZXh0VHJpbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRUcmltO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uRW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRW1haWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXNrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzaztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNsb3RDaGFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2xvdENoYXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTXVsdGlwbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTWF4RmlsZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlQWNjZXB0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUFjY2VwdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVPblNlbGVjdEhhbmRsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VVcmxJbnB1dFZpc2libGVPbkRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbWFnZVByZXZpZXdBbGxvd1N2ZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlUHJldmlld0FsbG93U3ZnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3Q29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRJbnB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRXcmFwcGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSGlkZGVuKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNMYWJlbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUZXh0KG9wdHM/OiBGaWVsZElucHV0VGV4dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoVGV4dFZhbGlkYXRpb25FbWFpbChvcHRzPy5lbWFpbCA/PyBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoVGV4dENvbW1vbk9wdHMob3B0cylcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1RleHRhcmVhKG9wdHM/OiBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBvcHRzPy5yb3dzO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cykud2l0aFRleHRDb21tb25PcHRzKG9wdHMpLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE51bWJlckdyb3VwaW5nKG9wdHM/Lmdyb3VwU2VwYXJhdG9yID8/IGZhbHNlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJGcmFjdGlvbnMob3B0cylcbiAgICAgICAgICAgIC53aXRoTnVtYmVyVmFsaWRhdGlvbihvcHRzKVxuICAgICAgICAgICAgLndpdGhMb2NhbGUob3B0cz8ubG9jYWxlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJEaXNwbGF5KG9wdHMpXG4gICAgICAgICAgICAud2l0aElucHV0Q29tbW9uT3B0cyhvcHRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShvcHRzPzogRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoPEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlPntcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBjdXJyZW5jeVByb3BlcnR5OiBvcHRzPy5jdXJyZW5jeVByb3BlcnR5ID8gKG9wdHMuY3VycmVuY3lQcm9wZXJ0eSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSBvcHRzPy5jdXJyZW5jeVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IG9wdHM/LmN1cnJlbmN5ID8/IHRoaXMuX2N1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeURpc3BsYXkgPSBvcHRzPy5jdXJyZW5jeURpc3BsYXkgPz8gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoTnVtYmVyR3JvdXBpbmcob3B0cz8uZ3JvdXBTZXBhcmF0b3IgPz8gZmFsc2UpXG4gICAgICAgICAgICAud2l0aE51bWJlckZyYWN0aW9ucyh7XG4gICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IDIsXG4gICAgICAgICAgICAgICAgbWluRnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDJcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aE51bWJlclZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoTG9jYWxlKG9wdHM/LmxvY2FsZSlcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1N3aXRjaCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW8ob3B0aW9uczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4sIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvO1xuICAgICAgICB0aGlzLl9yYWRpb09wdGlvbnMgPSBvcHRpb25zLm1hcChvID0+IDxSYWRpb1ZhbHVlPnt2YWx1ZTogbywgdGl0bGU6IGAke29wdGlvbnNUaXRsZVBhdGggPyBgJHtvcHRpb25zVGl0bGVQYXRofS5gIDogJyd9JHtvfWB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW9Gcm9tRW51bTxFbnVtPihlbnVtTW9kZWw6IEVudW1EZXNjcmlwdG9yPEVudW0+LCB2YWx1ZXM/OiBBcnJheTxFbnVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW87XG4gICAgICAgIHRoaXMuX3JhZGlvT3B0aW9ucyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPihlbnVtTW9kZWwudHlwZSwgdmFsdWVzLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5KGVudW1Nb2RlbC50eXBlLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlUGlja2VyKG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlck9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhEYXRlVmFsaWRhdGlvbihvcHRzKS53aXRoRGF0ZVBpY2tlckRpc3BsYXkob3B0cykud2l0aERhdGVWYWx1ZSh7XG4gICAgICAgICAgICBhc0RhdGVPYmo6IG9wdHM/LmFzRGF0ZU9iaixcbiAgICAgICAgICAgIHV0Yzogb3B0cz8udXRjLFxuICAgICAgICAgICAgbm9UaW1lWm9uZTogb3B0cz8ubm9UaW1lWm9uZSxcbiAgICAgICAgICAgIG5vVGltZTogb3B0cz8ubm9UaW1lXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc01hc2sob3B0cz86IEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s7XG4gICAgICAgIHRoaXMuX21hc2sgPSBvcHRzPy5tYXNrO1xuICAgICAgICB0aGlzLl9zbG90Q2hhciA9IG9wdHM/LnNsb3RDaGFyO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ZpbGUob3B0cz86IEZpZWxkSW5wdXRGaWxlT3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uRmlsZTtcbiAgICAgICAgdGhpcy5fZmlsZU11bHRpcGxlID0gb3B0cz8ubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZSA9IG9wdHM/Lm1heEZpbGVTaXplO1xuICAgICAgICB0aGlzLl9maWxlQWNjZXB0ID0gb3B0cz8uYWNjZXB0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsZU9uU2VsZWN0SGFuZGxlcihvcHRzPy5vbkZpbGVTZWxlY3RIYW5kbGVyRm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ltYWdlRmlsZShvcHRzPzogRmllbGRJbnB1dEZpbGVPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYXNGaWxlKG9wdHMpO1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VGaWxlO1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXcgPSBvcHRzPy5wcmV2aWV3O1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZyA9IG9wdHM/LnByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50ID0gb3B0cz8ucHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSW1hZ2VVcmwob3B0cz86IEZpZWxkSW5wdXRJbWFnZVVybE9wdHMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsO1xuICAgICAgICB0aGlzLl9maWxlTXVsdGlwbGUgPSBvcHRzPy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3ID0gb3B0cz8ucHJldmlldztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSBvcHRzPy5wcmV2aWV3QWxsb3dTdmc7XG4gICAgICAgIHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IG9wdHM/LnByZXZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gb3B0cz8uaW5wdXRWaXNpYmxlT25EaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4sIG9wdHM/OiBGaWVsZElucHV0Q29tcG9uZW50T3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHMgPSBvcHRzPy5pbnB1dHM7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gb3B0cz8uZmllbGRXcmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclN0ZXAgPSBvcHRzPy5zdGVwO1xuICAgICAgICB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdCA9IG9wdHM/LmF1dG9Db3JyZWN0O1xuICAgICAgICB0aGlzLl9udW1iZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX251bWJlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2NhbGUobG9jYWxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMob3B0cz86IEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlKSB7XG4gICAgICAgIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyRGlzcGxheShvcHRzPzogRmllbGRJbnB1dE51bWJlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9udW1iZXJQcmVmaXggPSBvcHRzPy5wcmVmaXg7XG4gICAgICAgIHRoaXMuX251bWJlclN1ZmZpeCA9IG9wdHM/LnN1ZmZpeDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0YXJlYVJvd3Mocm93cz86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9yb3dzID0gcm93cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0VmFsaWRhdGlvbihvcHRzPzogRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbWluTGVuZ3RoID0gb3B0cz8ubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXhMZW5ndGggPSBvcHRzPy5tYXhMZW5ndGg7XG4gICAgICAgIHRoaXMuX3BhdHRlcm4gPSBvcHRzPy5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgdGV4dCBpbnB1dCBlbGVtZW50IChpLmUuIHZhbHVlIHZhbHVlIHRyaW1taW5nKS5cbiAgICAgKiBAcGFyYW0gb3B0c1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGV4dENvbW1vbk9wdHMob3B0cz86IEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGV4dFRyaW0gPSBvcHRzPy50cmltO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgaW5wdXQgZWxlbWVudCAoaS5lLiB2YWx1ZSBvbiBlbXB0eSBpbnB1dCkuXG4gICAgICogQHBhcmFtIG9wdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aElucHV0Q29tbW9uT3B0cyhvcHRzPzogRmllbGRJbnB1dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VtcHR5VmFsdWUgPSBvcHRzPy5lbXB0eVZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVQaWNrZXJEaXNwbGF5KG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRm9ybWF0ID0gb3B0cz8uZm9ybWF0O1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWUgPSBvcHRzPy5zaG93VGltZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gb3B0cz8uc2hvd1NlY29uZHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0ZVZhbGlkYXRpb24ob3B0cz86IEZpZWxkSW5wdXREYXRlVmFsaWRhdGlvbk9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1pbiA9IG9wdHM/Lm1pbjtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSYWRpb09wdGlvbnMob3B0czoge2xhYmVsQ2xhc3NOYW1lPzogc3RyaW5nfSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lID0gb3B0cy5sYWJlbENsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUob3B0cz86IEZpZWxkRGF0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaiA9IG9wdHM/LmFzRGF0ZU9iajtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjID0gb3B0cz8udXRjO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lID0gb3B0cz8ubm9UaW1lWm9uZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lID0gb3B0cz8ubm9UaW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRleHRWYWxpZGF0aW9uRW1haWwoZW1haWwgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25FbWFpbCA9IGVtYWlsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbGVPblNlbGVjdEhhbmRsZXIoZm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fcm93cyA9IHRoaXMuX3Jvd3M7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW4gPSB0aGlzLl9udW1iZXJNaW47XG4gICAgICAgIGZpZWxkLl9udW1iZXJNYXggPSB0aGlzLl9udW1iZXJNYXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdGVwID0gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICAgICAgZmllbGQuX251bWJlckF1dG9Db3JyZWN0ID0gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyA9IHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZmllbGQuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGZpZWxkLl9udW1iZXJQcmVmaXggPSB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdWZmaXggPSB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgICAgIGZpZWxkLl9yYWRpb09wdGlvbnMgPSBbLi4udGhpcy5fcmFkaW9PcHRpb25zXTtcbiAgICAgICAgZmllbGQuX3JhZGlvTGFiZWxDbGFzc05hbWUgPSB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlckZvcm1hdCA9IHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyTWluID0gdGhpcy5fZGF0ZVBpY2tlck1pbjtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJNYXggPSB0aGlzLl9kYXRlUGlja2VyTWF4O1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dUaW1lID0gdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlVXRjID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVOb1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmogPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmo7XG4gICAgICAgIGZpZWxkLl9tYXhMZW5ndGggPSB0aGlzLl9tYXhMZW5ndGg7XG4gICAgICAgIGZpZWxkLl9taW5MZW5ndGggPSB0aGlzLl9taW5MZW5ndGg7XG4gICAgICAgIGZpZWxkLl9wYXR0ZXJuID0gdGhpcy5fcGF0dGVybjtcbiAgICAgICAgZmllbGQuX21hc2sgPSB0aGlzLl9tYXNrO1xuICAgICAgICBmaWVsZC5fc2xvdENoYXIgPSB0aGlzLl9zbG90Q2hhcjtcbiAgICAgICAgZmllbGQuX2ZpbGVNdWx0aXBsZSA9IHRoaXMuX2ZpbGVNdWx0aXBsZTtcbiAgICAgICAgZmllbGQuX2ZpbGVNYXhGaWxlU2l6ZSA9IHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZTtcbiAgICAgICAgZmllbGQuX2ZpbGVBY2NlcHQgPSB0aGlzLl9maWxlQWNjZXB0O1xuICAgICAgICBmaWVsZC5fZmlsZU9uU2VsZWN0SGFuZGxlciA9IHRoaXMuX2ZpbGVPblNlbGVjdEhhbmRsZXI7XG4gICAgICAgIGZpZWxkLl9pbWFnZVByZXZpZXcgPSB0aGlzLl9pbWFnZVByZXZpZXc7XG4gICAgICAgIGZpZWxkLl9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZCA9IHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkO1xuICAgICAgICBmaWVsZC5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgZmllbGQuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50SW5wdXRzID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SW5wdXRzO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMgPSB0aGlzLl9jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICAgICAgZmllbGQuX2xvY2FsZSA9IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgZmllbGQuX2N1cnJlbmN5ID0gdGhpcy5fY3VycmVuY3k7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fdGV4dFRyaW0gPSB0aGlzLl90ZXh0VHJpbTtcbiAgICAgICAgZmllbGQuX2VtcHR5VmFsdWUgPSB0aGlzLl9lbXB0eVZhbHVlO1xuICAgICAgICBmaWVsZC5fdmFsaWRhdGlvbkVtYWlsID0gdGhpcy5fdmFsaWRhdGlvbkVtYWlsO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum } from '../models/editor.model';\nimport { FieldActionDescriptor } from './field-action.descriptor';\nimport { AFieldDescriptor } from './field-base.descriptor';\nimport { FieldGroupDescriptor, FieldTabGroupDescriptor } from './field-group.descriptor';\nimport { FieldLookupDescriptor, FieldLookupEnumDescriptor, fieldLookupGetProviderCfgObj } from './field-lookup.descriptor';\nimport { FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj } from './field-many.descriptor';\nimport { FieldInputDescriptor } from './field.descriptor';\nimport { EditorDescriptorNestedObjectWrapper } from './wrappers/editor-descriptor-nested-object-wrapper';\nexport class EditorDescriptorInst {\n static { this.defaultGroupName = EDITOR_DEFAULT_GROUP_NAME; }\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n constructor(model, tableviewEditorType = TableviewEditorTypeEnum.None) {\n /** @ignore */ this._tabs = [];\n /** @ignore */ this._groups = [];\n /** @ignore */ this._fields = [];\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n /**\n * Model descriptor for editor.\n */\n get model() {\n return this._model;\n }\n /**\n * Editor's tabs.\n */\n get tabs() {\n return this._tabs;\n }\n /**\n * Editor's fields.\n */\n get fields() {\n return this._fields;\n }\n /**\n * Type of editor for tableview.\n */\n get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n /**\n * If editor is disabled.\n */\n get disabled() {\n return this._disabled;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n get localizationModel() {\n return this._localizationModel;\n }\n get autoSave() {\n return this._autoSave;\n }\n get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n get autofocusOnField() {\n return this._autofocusOnField;\n }\n /**\n * Dives into nested object to add fields from the nested object on property.\n *\n * @experimental\n *\n * @param property Model property name.\n */\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this, property);\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n * @return Newly created group descriptor.\n */\n addTabGroup(name, title) {\n const tabGroup = new FieldTabGroupDescriptor(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n */\n withTabGroup(name, title) {\n this.addTabGroup(name, title);\n return this;\n }\n /**\n * Gets group by its name (key).\n * @param name Group's key.\n */\n getGroup(name) {\n return typeof name === 'string' ? (this._groups.find(g => g.name === name) ?? null) : (this._groups[name] ?? null);\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n * @return Newly created group descriptor.\n */\n addFieldGroup(name, title) {\n const fieldGroup = new FieldGroupDescriptor(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n withFieldGroup(name, title) {\n this.addFieldGroup(name, title);\n return this;\n }\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n getField(property) {\n return this.getFieldUnsafe(property);\n }\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n getFieldUnsafe(property) {\n return this._fields.find(f => f.property === property) ?? null;\n }\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n removeField(property) {\n return this.removeFieldUnsafe(property);\n }\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n removeFieldUnsafe(property) {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, { name: 'EditorDescriptorError' });\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n addFieldDescriptor(field) {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n addFieldUnsafe(property) {\n const field = new FieldInputDescriptor(property);\n this.addFieldDescriptor(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = new FieldActionDescriptor(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = new FieldLookupDescriptor(property, {\n ...(opts?.serviceProvider ? fieldLookupGetProviderCfgObj(opts.serviceProvider) : {})\n });\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = new FieldLookupEnumDescriptor(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = new FieldManyEditorDescriptor(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor(property, mainTableDescriptor, lookupTableDescriptor, {\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Disables field on editor.\n * @param disabled\n */\n withDisabled(disabled = true) {\n this._disabled = disabled;\n return this;\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidation(name, validator, message, opts) {\n return this.withValidationUnsafe(name, validator, message, opts);\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidationUnsafe(name, validator, message, opts) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n withAutoSave(enabled = true, autoSaveIdentifier) {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n withAutofocusOnField(enabled = true) {\n this._autofocusOnField = enabled;\n return this;\n }\n /**\n * Creates a copy of editor descriptor object.\n */\n copy() {\n const editor = new EditorDescriptorInst(this.model.copy(), this.tableviewEditorType);\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map());\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._autofocusOnField = this._autofocusOnField;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n return editor;\n }\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n createFieldGroupDescriptor(fieldGroup) {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n createTabGroupDescriptor(tabGroup) {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n /**\n * Creates default field group.\n * @internal\n */\n createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.addFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n /**\n * Creates default tab group.\n * @internal\n */\n createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.addTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._localizationLocalizationProperty = property;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty;\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQWdCLG9CQUFvQixFQUFzQyxNQUFNLDZCQUE2QixDQUFDO0FBTXJILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSTFGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3pILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXJJLE9BQU8sRUFBQyxvQkFBb0IsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RyxNQUFNLE9BQU8sb0JBQW9CO2FBR04scUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBd0JwRTs7OztPQUlHO0lBQ0gsWUFBbUIsS0FBbUMsRUFBRSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJO1FBekIxRyxjQUFjLENBQW9CLFVBQUssR0FBZ0QsRUFBRSxDQUFDO1FBQzFGLGNBQWMsQ0FBb0IsWUFBTyxHQUFnRSxFQUFFLENBQUM7UUFDNUcs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QUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUNaLFFBQWtCLEVBQ2xCLEtBQXlDLEVBQ3pDLGNBQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFrQixFQUFFLEtBQUssRUFBRSxjQUF3QixDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLGVBQWUsQ0FBbUIsUUFBZ0IsRUFBRSxLQUF3QyxFQUFFLGNBQXNCO1FBQ3ZILElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxRQUFrQixDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLGNBQXdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUF1QixFQUFFLFNBQXlDLEVBQUUsSUFBaUM7UUFDbEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLElBQUk7WUFDVixhQUFhLEVBQUUsU0FBUztZQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQWlCO1lBQ2pDLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBcnJheUl0ZW1UeXBlLCBDb21tb25zSW50ZXJuYWxFcnJvciwgRW51bUNvbnN0YW50VHlwZSwgSUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzLCBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUUsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7Rm9ybVZhbGlkYXRpb25NZXNzYWdlLCBGb3JtVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0Zvcm1FdmVudCwgRm9ybUV2ZW50RGF0YSwgRm9ybUV2ZW50VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5pbXBvcnQge0lGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWFjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZEdyb3VwRGVzY3JpcHRvciwgRmllbGRUYWJHcm91cERlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtZ3JvdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwRGVzY3JpcHRvciwgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvciwgZmllbGRMb29rdXBHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsIGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZX0gZnJvbSAnLi9maWVsZC12YWxpZGF0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZElucHV0RGVzY3JpcHRvciwgRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlfSBmcm9tICcuL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcn0gZnJvbSAnLi93cmFwcGVycy9lZGl0b3ItZGVzY3JpcHRvci1uZXN0ZWQtb2JqZWN0LXdyYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+XG57XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBkZWZhdWx0R3JvdXBOYW1lID0gRURJVE9SX0RFRkFVTFRfR1JPVVBfTkFNRTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZXZpZXdFZGl0b3JUeXBlOiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYnM6IEFycmF5PEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2dyb3VwczogQXJyYXk8RmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2ZpZWxkczogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRUYWJHcm91cD86IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRHcm91cD86IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmU/OiBib29sZWFuO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmVJZGVudGlmaWVyPzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hdXRvZm9jdXNPbkZpZWxkPzogYm9vbGVhbjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8YW55PjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF9ldmVudHNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Rm9ybUV2ZW50PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBvZiBlZGl0b3IgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RWRpdG9yVHlwZSBUeXBlIG9mIGVkaXRvciBpbiB0YWJsZXZpZXcgKGFkZCwgZWRpdCwgdmlldyBvciBub25lKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sIHRhYmxldmlld0VkaXRvclR5cGUgPSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5Ob25lKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGUgPSB0YWJsZXZpZXdFZGl0b3JUeXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vZGVsIGRlc2NyaXB0b3IgZm9yIGVkaXRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdG9yJ3MgdGFicy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRhYnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVkaXRvcidzIGZpZWxkcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUeXBlIG9mIGVkaXRvciBmb3IgdGFibGV2aWV3LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3RWRpdG9yVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgZWRpdG9yIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbk1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvU2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9TYXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b1NhdmVJZGVudGlmaWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b1NhdmVJZGVudGlmaWVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2ZvY3VzT25GaWVsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGl2ZXMgaW50byBuZXN0ZWQgb2JqZWN0IHRvIGFkZCBmaWVsZHMgZnJvbSB0aGUgbmVzdGVkIG9iamVjdCBvbiBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PiB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXIodGhpcywgcHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyB0YWIgZ3JvdXAuIE5leHQgYWRkZWQgZmllbGRzIGFyZSBhZGRlZCB0byBuZXdseSBjcmVhdGVkIHRhYiBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgdGFiLjdAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKiBAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYkdyb3VwID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgdGFiR3JvdXAud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXApO1xuICAgICAgICByZXR1cm4gdGFiR3JvdXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBuZXcgdGFiIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCB0YWIgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIHRhYi43QHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGdyb3VwIGJ5IGl0cyBuYW1lIChrZXkpLlxuICAgICAqIEBwYXJhbSBuYW1lIEdyb3VwJ3Mga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHcm91cChuYW1lOiBzdHJpbmcgfCBudW1iZXIpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyA/ICh0aGlzLl9ncm91cHMuZmluZChnID0+IGcubmFtZSA9PT0gbmFtZSkgPz8gbnVsbCkgOiAodGhpcy5fZ3JvdXBzW25hbWVdID8/IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IGZpZWxkIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCBmaWVsZCBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgZ3JvdXAuXG4gICAgICogQHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZEdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgZmllbGRHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gZmllbGRHcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBmaWVsZCBncm91cC4gTmV4dCBhZGRlZCBmaWVsZHMgYXJlIGFkZGVkIHRvIG5ld2x5IGNyZWF0ZWQgZmllbGQgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIGdyb3VwLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgRWRpdG9yTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5fZmllbGRzLmZpbmRJbmRleChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWVsZCAke3Byb3BlcnR5fSBkb2VzIG5vdCBleGlzdC5gLCB7bmFtZTogJ0VkaXRvckRlc2NyaXB0b3JFcnJvcid9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2dyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZElkeCA9IGdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiBmIGluc3RhbmNlb2YgQUZpZWxkRGVzY3JpcHRvciAmJiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBGaWVsZElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZmllbGRzLnNwbGljZShncm91cEZpZWxkSWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKGZpZWxkSWR4LCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGZpZWxkIGJ5IHRoZSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZCBGaWVsZCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5zb21lKGYgPT4gZi5wcm9wZXJ0eSA9PT0gZmllbGQucHJvcGVydHkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpZWxkICcke2ZpZWxkLnByb3BlcnR5fScgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0R3JvdXAoKTtcbiAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXA/LmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBmaWVsZCBieSB0aGUgbW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUgKFVOU0FGRSkuIFByb3BlcnR5IGlzIG5vdCBjaGVja2VkIG9uIGVkaXRvciBtb2RlbC5cbiAgICAgKiBVc2Uge2FkZEZpZWxkfSBmb3Igc2FmZSB1c2FnZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBFZGl0b3JNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZEZpZWxkKHApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZyk6IEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4oYWN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBMb29rdXBNb2RlbCBleHRlbmRzIE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4gPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldXG4gICAgPihwcm9wZXJ0eTogUHJvcGVydHksIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG9wdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFtVTlNBRkVdIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzPExvb2t1cE1vZGVsLCBTZXJ2aWNlPn0gb3B0cyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgY29uZmlndXJpbmcgdHlwZSBhbmQvb3Igc2VydmljZSBwcm92aWRlci5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGZpZWxkTG9va3VwR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHkgYXMgc3RyaW5nLCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBlbnVtIGxvb2t1cCBmaWVsZC5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwncyBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBlbnVtRGVzYyBUeXBlIG9mIGVudW0gb3IgZW51bSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFByb3ZpZGVzIHN1YnNldCBvZiBlbnVtJ3MgYXZhaWxhYmxlIGNvbnN0YW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0gPSBFbnVtQ29uc3RhbnRUeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMgKFVOU0FGRSkuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgY2ZnID0gZmllbGRNYW55VG9NYW55R2V0UHJvdmlkZXJDZmdPYmoobG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZVR5cGUsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgZmllbGQgb24gZWRpdG9yLlxuICAgICAqIEBwYXJhbSBkaXNhYmxlZFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRGlzYWJsZWQoZGlzYWJsZWQgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZ3JvdXAgdmFsaWRhdG9yIHRvIGVkaXRvci5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxpZGF0b3IgRmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIEZpZWxkIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0cyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlPGtleW9mIEVkaXRvck1vZGVsPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVmFsaWRhdGlvblVuc2FmZShuYW1lLCB2YWxpZGF0b3IsIG1lc3NhZ2UsIG9wdHMgYXMgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGdyb3VwIHZhbGlkYXRvciB0byBlZGl0b3IuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdmFsaWRhdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIEZpZWxkIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBGaWVsZCB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdHMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IEVkaXRvck1vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0b3I/OiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXAud2l0aFZhbGlkYXRpb24obmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEF1dG9TYXZlKGVuYWJsZWQgPSB0cnVlLCBhdXRvU2F2ZUlkZW50aWZpZXI/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYXV0b1NhdmUgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSBhdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQXV0b2ZvY3VzT25GaWVsZChlbmFibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hdXRvZm9jdXNPbkZpZWxkID0gZW5hYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgZWRpdG9yIGRlc2NyaXB0b3Igb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3B5KCk6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLm1vZGVsLmNvcHkoKSwgdGhpcy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcblxuICAgICAgICBlZGl0b3IuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIGNvbnN0IGZpZWxkc01hcCA9IGVkaXRvci5maWVsZHMucmVkdWNlKChtYXAsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBtYXAuc2V0KGZpZWxkLnByb3BlcnR5LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkdyb3VwQ29weSA9IHRhYkdyb3VwLmNvcHkodHJ1ZSk7XG4gICAgICAgICAgICAvLyBzZXQgZmllbGRzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkdyb3VwLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGFiR3JvdXAuZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29weSA9IHRhYkdyb3VwQ29weS5maWVsZHNbaV07XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyb3VwLmZpZWxkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvcHkgPSBmaWVsZHNNYXAuZ2V0KGdyb3VwLmZpZWxkc1tqXS5wcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmllbGRDb3B5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvdWxkIG5vdCBjb3B5IGVkaXRvciBkZXNjcmlwdG9yOiBmaWVsZCAnJHtncm91cC5maWVsZHNbal0ucHJvcGVydHl9JyAodGFiICcke3RhYkdyb3VwLm5hbWV9JywgZ3JvdXAgJHtncm91cC5uYW1lfScpLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQ29weS5hZGRGaWVsZChmaWVsZENvcHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZGl0b3IuX2dyb3Vwcy5wdXNoKGdyb3VwQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlZGl0b3IuX3RhYnMucHVzaCh0YWJHcm91cENvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAgPSBlZGl0b3IuX3RhYnMubGVuZ3RoID4gMCA/IGVkaXRvci5fdGFic1tlZGl0b3IuX3RhYnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlZGl0b3IuX2N1cnJlbnRUYWJHcm91cCkge1xuICAgICAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoID4gMCA/IGVkaXRvci5fY3VycmVudFRhYkdyb3VwLmZpZWxkc1tlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIGVkaXRvci5fYXV0b1NhdmUgPSB0aGlzLl9hdXRvU2F2ZTtcbiAgICAgICAgZWRpdG9yLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIGVkaXRvci5fYXV0b2ZvY3VzT25GaWVsZCA9IHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgICAgIGVkaXRvci5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgZWRpdG9yLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgICAgICBlZGl0b3IuX2xvY2FsaXphdGlvbk1vZGVsID0gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgICAgIGVkaXRvci5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcblxuICAgICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZWQgZ3JvdXAgZnJvbSBmaWVsZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZEdyb3VwIEZpZWxkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0VGFiR3JvdXAoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gZmllbGRHcm91cDtcbiAgICAgICAgdGhpcy5fZ3JvdXBzLnB1c2goZmllbGRHcm91cCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWJHcm91cD8uYWRkRmllbGQoZmllbGRHcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGFiIGdyb3VwIGZyb20gdGFiIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQHBhcmFtIHRhYkdyb3VwIFRhYiBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXA6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXAgPSB0YWJHcm91cDtcbiAgICAgICAgdGhpcy5fdGFicy5wdXNoKHRhYkdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBkZWZhdWx0IGZpZWxkIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdEdyb3VwKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRUYWJHcm91cCgpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYkdyb3VwPy5maWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEZpZWxkR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGRlZmF1bHQgdGFiIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCkge1xuICAgICAgICBpZiAodGhpcy5fdGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGFiR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgJ2dlbmVyYWwuZ2VuZXJhbCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIGRpc3BsYXlpbmcgY29ycmVjdC9sb2NhbGl6ZWQgZGF0YSBpbiB0aGUgZWRpdG9yXG4gICAgICogQHBhcmFtIHByb3BlcnR5IHByb3BlcnR5IHRoYXQgdGVsbHMgdXMgd2hlcmUgb24gdGhlIG1vZGVsIGFyZSBsb2NhbGl6YXRpb25zIGFjY2Vzc2libGVcbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZm9yIGxvY2FsaXphdGlvbnNcbiAgICAgKiBAcGFyYW0gbG9jYWxlUHJvcGVydHkgcHJvcGVydHkgYnkgd2hpY2ggd2UgZmluZCB0aGUgbG9jYWxlXG4gICAgICovXG4gICAgcHVibGljIGxvY2FsaXplZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBMb2NhbGl6YXRpb25Nb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxMb2NhbGl6YXRpb25Nb2RlbD4sXG4gICAgICAgIGxvY2FsZVByb3BlcnR5OiBrZXlvZiBMb2NhbGl6YXRpb25Nb2RlbFxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBtb2RlbCwgbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkVW5zYWZlPExvY2FsaXphdGlvblR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uVHlwZT4sIGxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSBwcm9wZXJ0eSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbk1vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRFdmVudCh0eXBlOiBGb3JtRXZlbnRUeXBlRW51bSwgY29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxhbnksIGFueT4sIGRhdGE/OiBGb3JtRXZlbnREYXRhPEVkaXRvck1vZGVsPikge1xuICAgICAgICB0aGlzLl9ldmVudHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm06IGNvbXBvbmVudC5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBldmVudHMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG59XG4iXX0=","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { EditorDescriptorInst } from './editor.descriptor';\nexport function editorDescriptor(modelOrOpts, opts) {\n if (modelOrOpts == null) {\n return new EditorDescriptorInst(model(), opts?.tableviewEditorType);\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst(modelOrOpts, opts?.tableviewEditorType);\n }\n else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst(model(modelOrOpts), modelOrOpts?.tableviewEditorType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRy9HLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBZ0J6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLFdBQTJHLEVBQzNHLElBQXFFO0lBRXJFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxFQUFlLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDckgsQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsV0FBVyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7U0FBTSxDQUFDO1FBQ0osNkRBQTZEO1FBQzdELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxDQUFjLFdBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHMsIFR5cGVEZXNjcmlwdG9yLCBtb2RlbH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7VGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9lZGl0b3IuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIHRhYmxldmlld0VkaXRvclR5cGU/OiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICBwYXJlbnRFZGl0b3JUeXBlPzogVHlwZURlc2NyaXB0b3I8UGFyZW50RWRpdG9yTW9kZWw+IHwgTW9kZWxEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPiB8IEVkaXRvckRlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnk+O1xufTtcbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0gTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxFZGl0b3JNb2RlbD4gJiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlQmFzZU9wdHNUeXBlPFBhcmVudEVkaXRvck1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPigpOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBvcHRzOiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sXG4gICAgb3B0cz86IEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+XG4pOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbE9yT3B0cz86IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICBvcHRzPzogRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikge1xuICAgIGlmIChtb2RlbE9yT3B0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbDxFZGl0b3JNb2RlbD4oKSwgb3B0cz8udGFibGV2aWV3RWRpdG9yVHlwZSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4obW9kZWxPck9wdHMsIG9wdHM/LnRhYmxldmlld0VkaXRvclR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgY291bGQgaGF2ZSBhdXRvR2VuZXJhdGVkIGlmIG1vZGVsIGRlc2NyaXB0b3IgaXMgY2xhc3NcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG1vZGVsPEVkaXRvck1vZGVsPihtb2RlbE9yT3B0cyksIG1vZGVsT3JPcHRzPy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcbiAgICB9XG59XG4iXX0=","export var FormFieldEventTypeEnum;\n(function (FormFieldEventTypeEnum) {\n FormFieldEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormFieldEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormFieldEventTypeEnum[\"DataProvider\"] = \"DataProvider\";\n FormFieldEventTypeEnum[\"DialogLifecycle\"] = \"DialogLifecycle\";\n FormFieldEventTypeEnum[\"RowReorder\"] = \"RowReorder\";\n FormFieldEventTypeEnum[\"Other\"] = \"Other\";\n})(FormFieldEventTypeEnum || (FormFieldEventTypeEnum = {}));\nexport var FormEventTypeEnum;\n(function (FormEventTypeEnum) {\n FormEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormEventTypeEnum[\"Submit\"] = \"Submit\";\n FormEventTypeEnum[\"Other\"] = \"Other\";\n})(FormEventTypeEnum || (FormEventTypeEnum = {}));\nexport class FormFieldEventComponentSubtype {\n static { this.ON_INIT = 'Component.OnInit'; }\n static { this.ON_VIEW_INIT = 'Component.OnViewInit'; }\n static { this.ON_CONTENT_INIT = 'Component.OnContentInit'; }\n static { this.ON_DESTROY = 'Component.OnDestroy'; }\n}\nexport class FormFieldEventDialogSubtype {\n static { this.VISIBILITY = 'Dialog.Visibility'; }\n static { this.TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance'; }\n static { this.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBTixJQUFZLHNCQU9YO0FBUEQsV0FBWSxzQkFBc0I7SUFDOUIsbUVBQXlDLENBQUE7SUFDekMscURBQTJCLENBQUE7SUFDM0IsdURBQTZCLENBQUE7SUFDN0IsNkRBQW1DLENBQUE7SUFDbkMsbURBQXlCLENBQUE7SUFDekIseUNBQWUsQ0FBQTtBQUNuQixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQztBQUVELE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDekIsOERBQXlDLENBQUE7SUFDekMsZ0RBQTJCLENBQUE7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsb0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QjtBQUVELE1BQU0sT0FBTyw4QkFBOEI7YUFDaEIsWUFBTyxHQUFHLGtCQUFrQixDQUFDO2FBQzdCLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7YUFDdEMsb0JBQWUsR0FBRyx5QkFBeUIsQ0FBQzthQUM1QyxlQUFVLEdBQUcscUJBQXFCLENBQUM7O0FBRzlELE1BQU0sT0FBTywyQkFBMkI7YUFDYixlQUFVLEdBQUcsbUJBQW1CLENBQUM7YUFDakMscUNBQWdDLEdBQUcsMENBQTBDLENBQUM7YUFDOUUsNENBQXVDLEdBQUcsZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7SUZvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4vZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVkaXRvclN1Ym1pdEV2ZW50PEl0ZW0+IHtcbiAgICBmb3JtSXRlbTogSXRlbTtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBGb3JtRmllbGRFdmVudFR5cGVFbnVtIHtcbiAgICBDb21wb25lbnRMaWZlY3ljbGUgPSAnQ29tcG9uZW50TGlmZWN5Y2xlJyxcbiAgICBWYWx1ZUNoYW5nZSA9ICdWYWx1ZUNoYW5nZScsXG4gICAgRGF0YVByb3ZpZGVyID0gJ0RhdGFQcm92aWRlcicsXG4gICAgRGlhbG9nTGlmZWN5Y2xlID0gJ0RpYWxvZ0xpZmVjeWNsZScsXG4gICAgUm93UmVvcmRlciA9ICdSb3dSZW9yZGVyJyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGVudW0gRm9ybUV2ZW50VHlwZUVudW0ge1xuICAgIENvbXBvbmVudExpZmVjeWNsZSA9ICdDb21wb25lbnRMaWZlY3ljbGUnLFxuICAgIFZhbHVlQ2hhbmdlID0gJ1ZhbHVlQ2hhbmdlJyxcbiAgICBTdWJtaXQgPSAnU3VibWl0JyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9JTklUID0gJ0NvbXBvbmVudC5PbkluaXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT05fVklFV19JTklUID0gJ0NvbXBvbmVudC5PblZpZXdJbml0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9OX0NPTlRFTlRfSU5JVCA9ICdDb21wb25lbnQuT25Db250ZW50SW5pdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9ERVNUUk9ZID0gJ0NvbXBvbmVudC5PbkRlc3Ryb3knO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU0lCSUxJVFkgPSAnRGlhbG9nLlZpc2liaWxpdHknO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFCTEVfQ0FQVElPTl9DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNhcHRpb25Db21wb25lbnRJbnN0YW5jZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRV9DT0xVTU5fQUNUSU9OU19DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNvbHVtbkFjdGlvbnNDb21wb25lbnRJbnN0YW5jZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUZpZWxkRXZlbnREYXRhPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgZXZlbnRTdWJ0eXBlPzogc3RyaW5nO1xuICAgIHZhbHVlPzogRmllbGRNb2RlbDtcbiAgICBmb3JtVmFsdWU/OiBFZGl0b3JNb2RlbDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUV2ZW50RGF0YTxFZGl0b3JNb2RlbD4ge1xuICAgIGV2ZW50U3VidHlwZT86IHN0cmluZztcbiAgICB2YWx1ZT86IEVkaXRvck1vZGVsOyAvLyBkaXJlY3QgdmFsdWUgZnJvbSBmb3JtLnZhbHVlQ2hhbmdlcywgZGlzYWJsZWQgZmllbGQgdmFsdWVzIGFuZCBzZXR0ZXJzIGFyZSBub3QgaW5jbHVkZWRcbiAgICBzdWJtaXRWYWxpZD86IGJvb2xlYW47IC8vIHRydWUgaWYgZm9ybSBpcyB2YWxpZFxuICAgIHN1Ym1pdFZhbHVlPzogRWRpdG9yTW9kZWw7IC8vIHZhbHVlIG9uIHN1Ym1pdFxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRmllbGRFdmVudDxGaWVsZFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZSA9IHVuZGVmaW5lZD4ge1xuICAgIHR5cGU6IEZvcm1GaWVsZEV2ZW50VHlwZUVudW07XG4gICAgZmllbGRDb21wb25lbnQ/OiBGaWVsZFR5cGU8Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEZpZWxkVmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPj47XG4gICAgZm9ybUNvbXBvbmVudD86IElGb3JtRWRpdG9yQ29tcG9uZW50PEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPjtcbiAgICBmaWVsZEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxGaWVsZFZhbHVlPjtcbiAgICBmb3JtOiBGb3JtR3JvdXA8e1tLIGluIGtleW9mIEZvcm1WYWx1ZV06IEFic3RyYWN0Q29udHJvbDxGb3JtVmFsdWVbS10+fT47XG4gICAgZmllbGRGb3JtbHlDb25maWc6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgZGF0YT86IEZvcm1GaWVsZEV2ZW50RGF0YTxGaWVsZFZhbHVlLCBGb3JtVmFsdWU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FdmVudDxGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZSA9IHVuZGVmaW5lZD4ge1xuICAgIHR5cGU6IEZvcm1FdmVudFR5cGVFbnVtO1xuICAgIGZvcm1Db21wb25lbnQ/OiBJRm9ybUVkaXRvckNvbXBvbmVudDxGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgZm9ybTogRm9ybUdyb3VwPHtbSyBpbiBrZXlvZiBGb3JtVmFsdWVdOiBBYnN0cmFjdENvbnRyb2w8Rm9ybVZhbHVlW0tdPn0+O1xuICAgIGRhdGE/OiBGb3JtRXZlbnREYXRhPEZvcm1WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yUmVzZXRFdmVudDxJdGVtPiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBmZXRjaD86IGJvb2xlYW47IC8vIGlmIGl0ZW0gc2hvdWxkIGJlIHJlLWZldGNoZWQgYWdhaW4gdGhyb3VnaCBkYXRhIHByb3ZpZGVyXG4gICAgaXRlbT86IEl0ZW07IC8vIGlmIHByZXNlbnQsIGl0ZW0gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHJlc2V0IGZvcm1cbiAgICBmaWVsZHM/OiBQYXJ0aWFsPEl0ZW0+O1xuICAgIGRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuIl19","import { Directive, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport * as i0 from \"@angular/core\";\nexport class AFormlyCustomFieldComponent extends FieldType {\n get model() {\n return this._model;\n }\n get form() {\n return this._form;\n }\n get options() {\n return this._options;\n }\n get key() {\n return this._key;\n }\n get formControl() {\n return this._formControl;\n }\n get props() {\n return this._props;\n }\n get showError() {\n return this._showError;\n }\n get id() {\n return this._id;\n }\n get formState() {\n return this._formState;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: AFormlyCustomFieldComponent, isStandalone: true, inputs: { field: \"field\", _model: [\"model\", \"_model\"], _form: [\"form\", \"_form\"], _options: [\"options\", \"_options\"], _key: [\"key\", \"_key\"], _formControl: [\"formControl\", \"_formControl\"], _props: [\"props\", \"_props\"], _showError: [\"showError\", \"_showError\"], _id: [\"id\", \"_id\"], _formState: [\"formState\", \"_formState\"] }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, decorators: [{\n type: Directive\n }], propDecorators: { field: [{\n type: Input,\n args: ['field']\n }], _model: [{\n type: Input,\n args: ['model']\n }], _form: [{\n type: Input,\n args: ['form']\n }], _options: [{\n type: Input,\n args: ['options']\n }], _key: [{\n type: Input,\n args: ['key']\n }], _formControl: [{\n type: Input,\n args: ['formControl']\n }], _props: [{\n type: Input,\n args: ['props']\n }], _showError: [{\n type: Input,\n args: ['showError']\n }], _id: [{\n type: Input,\n args: ['id']\n }], _formState: [{\n type: Input,\n args: ['formState']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBTTNDLE1BQU0sT0FBZ0IsMkJBQTJFLFNBQVEsU0FBc0U7SUFZM0ssSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQWEsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs4R0E5Q2lCLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQURoRCxTQUFTOzhCQUVrQixLQUFLO3NCQUE1QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNDLEtBQUs7c0JBQW5CLEtBQUs7dUJBQUMsTUFBTTtnQkFDSyxRQUFRO3NCQUF6QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0YsSUFBSTtzQkFBakIsS0FBSzt1QkFBQyxLQUFLO2dCQUNVLFlBQVk7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkFDSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBQ00sVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUNMLEdBQUc7c0JBQWYsS0FBSzt1QkFBQyxJQUFJO2dCQUNTLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBDb21tb25zRm9ybWx5RmllbGRQcm9wc30gZnJvbSAnLi9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnMsIENvbW1vbnNGb3JtbHlGb3JtU3RhdGV9IGZyb20gJy4vZm9ybWx5LW9wdGlvbnMubW9kZWwnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlID0gdW5kZWZpbmVkPiBleHRlbmRzIEZpZWxkVHlwZTxDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPj4ge1xuICAgIEBJbnB1dCgnZmllbGQnKSBkZWNsYXJlIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ21vZGVsJykgX21vZGVsITogVmFsdWU7XG4gICAgQElucHV0KCdmb3JtJykgX2Zvcm0hOiBGb3JtR3JvdXA8e1tLIGluIGtleW9mIEZvcm1WYWx1ZV06IEFic3RyYWN0Q29udHJvbDxGb3JtVmFsdWVbS10+fT47XG4gICAgQElucHV0KCdvcHRpb25zJykgX29wdGlvbnMhOiBDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnM8Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ2tleScpIF9rZXkhOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgIEBJbnB1dCgnZm9ybUNvbnRyb2wnKSBfZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDxWYWx1ZT47XG4gICAgQElucHV0KCdwcm9wcycpIF9wcm9wcyE6IENvbW1vbnNGb3JtbHlGaWVsZFByb3BzPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgQElucHV0KCdzaG93RXJyb3InKSBfc2hvd0Vycm9yITogYm9vbGVhbjtcbiAgICBASW5wdXQoJ2lkJykgX2lkITogc3RyaW5nO1xuICAgIEBJbnB1dCgnZm9ybVN0YXRlJykgX2Zvcm1TdGF0ZSE6IENvbW1vbnNGb3JtbHlGb3JtU3RhdGU8Rm9ybVZhbHVlPjtcblxuICAgIG92ZXJyaWRlIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IGtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgZm9ybUNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgcHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgc2hvd0Vycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0Vycm9yO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtU3RhdGU7XG4gICAgfVxufVxuIl19","import { DataProviderInst } from '@mediusinc/mng-commons/core';\nimport { TableDataProviderInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nexport class TableviewDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this.editorDataProvider = new EditorDataProviderInst(serviceType);\n this.tableDataProvider = new TableDataProviderInst(serviceType);\n }\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n get create() {\n return this.editorDataProvider.create;\n }\n get update() {\n return this.editorDataProvider.update;\n }\n get delete() {\n return this.editorDataProvider.delete;\n }\n get mapFetchItemToCreateItem() {\n return this.editorDataProvider.mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this.editorDataProvider.mapFetchItemToUpdateItem;\n }\n withGetAll(fn) {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n withGetAllEagerly(fn) {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n withFetch(fn) {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n withCreate(fn) {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n withUpdate(fn) {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n withDelete(fn) {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n withMapFetchItemToCreateItem(fn) {\n this.editorDataProvider.withMapFetchItemToCreateItem(fn);\n return this;\n }\n withMapFetchItemToUpdateItem(fn) {\n this.editorDataProvider.withMapFetchItemToUpdateItem(fn);\n return this;\n }\n reloadTable(event) {\n this.tableDataProvider.reloadTable(event);\n }\n resetEditor(event) {\n this.editorDataProvider.resetEditor(event);\n }\n}\nexport class DynamicTableviewDataProviderInst extends TableviewDataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGF0YS1wcm92aWRlcnMvdGFibGV2aWV3LmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBd0YscUJBQXFCLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFFaEwsT0FBTyxFQUtILHNCQUFzQixFQUd6QixNQUFNLGtEQUFrRCxDQUFDO0FBYzFELE1BQU0sT0FBTyx5QkFVVCxTQUFRLGdCQUE4QztJQVF0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksc0JBQXNCLENBQXlELFdBQVcsQ0FBQyxDQUFDO1FBQzFILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHFCQUFxQixDQUFvRCxXQUFXLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQXNFO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQTJEO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQWlEO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFnRTtRQUN2RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFtQixFQUF5RDtRQUNsRixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDRCQUE0QixDQUFDLEVBQTJEO1FBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXdDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUErQjtRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQ0FBNkYsU0FBUSx5QkFBK0Q7SUFDN0ssWUFBbUIsV0FBeUI7UUFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0YVByb3ZpZGVySW5zdCwgU2VydmljZUNsYXNzT3B0VHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEVhZ2VyRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZSwgVGFibGVEYXRhUHJvdmlkZXJJbnN0LCBUYWJsZVJlbG9hZEV2ZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7XG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckluc3QsXG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlRm5UeXBlLFxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJcbn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yUmVzZXRFdmVudH0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5cbmV4cG9ydCB0eXBlIElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwgPSBhbnksXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4gPSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4gJiBJVGFibGVEYXRhUHJvdmlkZXI8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSA9IGFueSxcbiAgICAgICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICAgICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgICAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgICAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIENyZWF0ZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbiAgICA+XG4gICAgZXh0ZW5kcyBEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+LFxuICAgICAgICBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD5cbntcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9yRGF0YVByb3ZpZGVyOiBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhYmxlRGF0YVByb3ZpZGVyOiBUYWJsZURhdGFQcm92aWRlckluc3Q8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc2VydmljZVR5cGU6IFNlcnZpY2VDbGFzcykge1xuICAgICAgICBzdXBlcihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMudGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0PFRhYmxlTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBnZXQgaXNMYXp5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZURhdGFQcm92aWRlci5pc0xhenk7XG4gICAgfVxuXG4gICAgZ2V0IHRhYmxlUmVsb2FkJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIudGFibGVSZWxvYWQkO1xuICAgIH1cblxuICAgIGdldCBlZGl0b3JSZXNldCQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5lZGl0b3JSZXNldCQ7XG4gICAgfVxuXG4gICAgZ2V0IGdldEFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLmZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICB3aXRoR2V0QWxsKGZuOiBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZTxUYWJsZU1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aEdldEFsbEVhZ2VybHkoZm46IFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRWFnZXJGblR5cGU8VGFibGVNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsRWFnZXJseShmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhGZXRjaChmbjogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hGblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhGZXRjaChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoQ3JlYXRlKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhVcGRhdGUoZm4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoRGVsZXRlPEl0ZW0gPSB1bmRlZmluZWQ+KGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoRGVsZXRlPEl0ZW0+KGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmVsb2FkVGFibGUoZXZlbnQ/OiBUYWJsZVJlbG9hZEV2ZW50PFNvcnRzLCBGaWx0ZXJzPik6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YVByb3ZpZGVyLnJlbG9hZFRhYmxlKGV2ZW50KTtcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnJlc2V0RWRpdG9yKGV2ZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+PiBleHRlbmRzIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8YW55LCBTZXJ2aWNlLCBhbnksIGFueSwgU2VydmljZUNsYXNzPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cbn1cbiJdfQ==","import { DynamicTableviewDataProviderInst, TableviewDataProviderInst } from './tableview.data-provider';\n/**\n * Creates and returns an instance of `TableviewDataProviderInst` with the specified options for managing tableview data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.filtersType] - The descriptor defining the filters type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.sortsType] - The descriptor defining the sorts type.\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>} An instance of `TableviewDataProviderInst` configured according to the provided options.\n */\nexport function tableviewDataProvider(opts) {\n return new TableviewDataProviderInst(opts?.service);\n}\nexport function tableviewDynamicDataProvider(serviceType) {\n return new DynamicTableviewDataProviderInst(serviceType);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kYXRhLXByb3ZpZGVycy90YWJsZXZpZXctZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXRHOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FTbkMsSUFRRDtJQUNHLE9BQU8sSUFBSSx5QkFBeUIsQ0FBcUYsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM1SixDQUFDO0FBSUQsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxXQUEwQjtJQUUxQixPQUFPLElBQUksZ0NBQWdDLENBQXdCLFdBQTJCLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCwgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnLi90YWJsZXZpZXcuZGF0YS1wcm92aWRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMgZm9yIG1hbmFnaW5nIHRhYmxldmlldyBkYXRhLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBUaGUgb3B0aW9ucyBvYmplY3QgdG8gY29uZmlndXJlIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy50eXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB0eXBlIG9mIG1vZGVsLlxuICogQHBhcmFtIHtTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlXSAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8Q3JlYXRlTW9kZWw+fSBbb3B0cy5maWx0ZXJzVHlwZV0gLSBUaGUgZGVzY3JpcHRvciBkZWZpbmluZyB0aGUgZmlsdGVycyB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy5zb3J0c1R5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHNvcnRzIHR5cGUuXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+fSBBbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgdGFibGVUeXBlPzogVHlwZURlc2NyaXB0b3I8VGFibGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbiAgICBzb3J0c1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxTb3J0cz4gfCBNb2RlbERlc2NyaXB0b3I8U29ydHM+O1xufSk6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3MsIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcywgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyKCk6IER5bmFtaWNUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PHVuZGVmaW5lZCwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyPFNlcnZpY2U+KHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RHluYW1pY0RhdGFQcm92aWRlcjxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PihcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1xuKTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { TableDescriptorInst, TableDynamicDescriptorInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDescriptorInst } from '../../editor/descriptors/editor.descriptor';\nimport { TableviewEditorTypeEnum } from '../../editor/models/editor.model';\nexport class TableviewDescriptorInst {\n constructor(model, opts) {\n this._isLocalized = false;\n this._model = model;\n this._table = new TableDescriptorInst(opts?.tableModel ?? model);\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst(opts?.addModel ?? model, TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst(opts?.editModel ?? model, TableviewEditorTypeEnum.Edit);\n }\n get table() {\n return this._table;\n }\n get detailsEditor() {\n return this._detailsEditor;\n }\n get addEditor() {\n return this._addEditor;\n }\n get editEditor() {\n return this._editEditor;\n }\n get model() {\n return this._model;\n }\n isLocalized() {\n return this._isLocalized;\n }\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n withEditorDescriptors(descriptor) {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n withDetailsDescriptor(descriptor) {\n this._detailsEditor = descriptor;\n return this;\n }\n withAddDescriptor(descriptor) {\n this._addEditor = descriptor;\n return this;\n }\n withEditDescriptor(descriptor) {\n this._editEditor = descriptor;\n return this;\n }\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details) {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n withValidation(name, expression, message, opts) {\n return this.withValidationUnsafe(name, expression, message, opts);\n }\n withValidationUnsafe(name, expression, message, opts) {\n this._detailsEditor.withValidationUnsafe(name, expression, message, opts);\n this._addEditor.withValidationUnsafe(name, expression, message, opts);\n this._editEditor.withValidationUnsafe(name, expression, message, opts);\n return this;\n }\n getColumn(property) {\n return this._table.getColumn(property);\n }\n getColumnUnsafe(property) {\n return this._table.getColumnUnsafe(property);\n }\n removeColumn(property) {\n this._table.removeColumn(property);\n }\n removeColumnUnsafe(property) {\n this._table.removeColumnUnsafe(property);\n }\n withColumn(column) {\n this._table.withColumn(column);\n return this;\n }\n addColumn(property) {\n return this._table.addColumn(property);\n }\n addColumnEnum(property, enumDesc) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n addColumnUnsafe(property) {\n return this._table.addColumnUnsafe(property);\n }\n withColumns(...properties) {\n this._table.withColumns(...properties);\n return this;\n }\n getSort(property) {\n return this._table.getSort(property);\n }\n getSortUnsafe(property) {\n return this._table.getSortUnsafe(property);\n }\n removeSort(property) {\n this._table.removeSort(property);\n }\n removeSortUnsafe(property) {\n this._table.removeSortUnsafe(property);\n }\n addSort(property, isDefault = false, ascending) {\n return this._table.addSort(property, isDefault, ascending);\n }\n addSortUnsafe(property, isDefault = false, ascending) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n withSort(property, isDefault = false, ascending) {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n withSortUnsafe(property, isDefault = false, ascending) {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n withDefaultSort(property, ascending, enabled) {\n this._table.withDefaultSort(property, ascending, enabled);\n return this;\n }\n withDefaultSortUnsafe(property, ascending, enabled) {\n this._table.withDefaultSortUnsafe(property, ascending, enabled);\n return this;\n }\n withSorts(...properties) {\n this._table.withSorts(...properties);\n return this;\n }\n withSortsUnsafe(...properties) {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n withDefaultSorts(...properties) {\n this._table.withDefaultSorts(...properties);\n return this;\n }\n withoutDefaultSorts() {\n this._table.withoutDefaultSorts();\n return this;\n }\n getFilter(property) {\n return this._table.getFilter(property);\n }\n getFilterUnsafe(property) {\n return this._table.getFilterUnsafe(property);\n }\n removeFilter(property) {\n this._table.removeFilter(property);\n }\n removeFilterUnsafe(property) {\n this._table.removeFilterUnsafe(property);\n }\n addFilter(property) {\n return this._table.addFilter(property);\n }\n addFilterUnsafe(property) {\n return this._table.addFilterUnsafe(property);\n }\n addFilterLookup(property, provider, optionsValueProperty) {\n return this._table.addFilterLookup(property, provider, optionsValueProperty);\n }\n addFilterLookupUnsafe(property, provider, optionsValueProperty) {\n return this._table.addFilterLookupUnsafe(property, provider, optionsValueProperty);\n }\n addFilterLookupEnum(property, enumDesc, options) {\n return this._table.addFilterLookupEnum(property, enumDesc, options);\n }\n addFilterLookupEnumUnsafe(property, enumDesc, options) {\n return this._table.addFilterLookupEnumUnsafe(property, enumDesc, options);\n }\n addFilterFromColumn(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumn(property, displayType, forceSimple);\n }\n withFiltersFromColumns(...properties) {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n withFiltersFromColumnsUnsafe(...properties) {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n addFilterFromColumnUnsafe(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n withFilter(property, filter) {\n this._table.withFilter(property, filter);\n return this;\n }\n withFilterUnsafe(filter) {\n this._table.withFilterUnsafe(filter);\n return this;\n }\n removeField(property) {\n this.removeFieldUnsafe(property);\n }\n removeFieldUnsafe(property) {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n addFieldDescriptor(field) {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n addFieldUnsafe(property) {\n const field = this._detailsEditor.addFieldUnsafe(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldToEditAndAdd(field) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, FieldsManageModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = this._detailsEditor.addFieldLookupUnsafe(property, opts);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe(property, \n // cast is needed, because the parent model of TableviewDescriptorInst is expected to be TableviewModel, but it cannot be in case there are different types across details, add or edit\n tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withTabGroup(name, title) {\n this._detailsEditor.addTabGroup(name, title);\n this._addEditor.addTabGroup(name, title);\n this._editEditor.addTabGroup(name, title);\n return this;\n }\n withFieldGroup(name, title) {\n this._detailsEditor.addFieldGroup(name, title);\n this._addEditor.addFieldGroup(name, title);\n this._editEditor.addFieldGroup(name, title);\n return this;\n }\n copy() {\n const tableview = new TableviewDescriptorInst(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n return this;\n }\n}\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst {\n constructor(model) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n get table() {\n return this._table;\n }\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n removeColumn(property) {\n this._table.removeColumn(property);\n return this;\n }\n withEntityForTranslations(i18nBaseKey) {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n /**\n * creates deep copy of tableview object and its children\n */\n copy() {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWhLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBVXpFLE1BQU0sT0FBTyx1QkFBdUI7SUF3QmhDLFlBQW1CLEtBQXNDLEVBQUUsSUFBOEU7UUFGL0gsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUE2QixJQUFJLEVBQUUsVUFBVSxJQUFLLEtBQWdELENBQUMsQ0FBQztRQUN6SSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQW9DLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBOEIsSUFBSSxFQUFFLFFBQVEsSUFBSyxLQUE4QyxFQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hLLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FDdkMsSUFBSSxFQUFFLFNBQVMsSUFBSyxLQUErQyxF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LE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUk7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgSUxvb2t1cERhdGFQcm92aWRlciwgSVRhYmxldmlld0Rlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2UsIElUYWJsZURhdGFQcm92aWRlciwgVGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3IsIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHMsIElGaWVsZHNNYW5hZ2V9IGZyb20gJy4uLy4uL2VkaXRvci9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi8uLi9lZGl0b3IvbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9maWVsZC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiA9IHtcbiAgICB0YWJsZU1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPFRhYmxlTW9kZWw+O1xuICAgIGFkZE1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPEFkZE1vZGVsPjtcbiAgICBlZGl0TW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8RWRpdE1vZGVsPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxcbiAgICAgICAgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIFNvcnRzID0ga2V5b2YgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpbHRlcnMgPSBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgICAgIFRhYmxlTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgRWRpdE1vZGVsID0gVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpZWxkc01hbmFnZU1vZGVsID0gVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxUYWJsZXZpZXdNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbiAgICA+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGVzY3JpcHRvcjxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgICAgICBJRmllbGRzTWFuYWdlPEZpZWxkc01hbmFnZU1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFRhYmxldmlld01vZGVsPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGU6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCBfZGV0YWlsc0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2FkZEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8QWRkTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2VkaXRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJvdGVjdGVkIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWw+LCBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ob3B0cz8udGFibGVNb2RlbCA/PyAobW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD4pKTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFRpdGxlKGAke3RoaXMuX21vZGVsLmkxOG5CYXNlS2V5fS5uYW1lYCk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbCwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aERpc2FibGVkKCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxBZGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG9wdHM/LmFkZE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxBZGRNb2RlbD4pLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICAgICAgb3B0cz8uZWRpdE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxFZGl0TW9kZWw+KSxcbiAgICAgICAgICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWxzRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFkZEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3IgYXMgdW5rbm93biBhcyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvciBhcyB1bmtub3duIGFzIEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBuZXcgY29weSBvZiBlZGl0b3IgZGVzY3JpcHRvciBhbmQgbWFrZXMgaXQgZGlzYWJsZWRcbiAgICAgKiB1c2FibGUgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzOjp3aXRoRWRpdG9yRGVzY3JpcHRvcnMsIHdoZXJlIGRldGFpbHNEZXNjcmlwdG9yIGlzIG1hZGUgbm9uLWRpc2FibGVkXG4gICAgICogQHBhcmFtIHR5cGUgd2hpY2ggZWRpdG9yIHR5cGUgdG8gc2V0IHRvIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZEVkaXRvckRlc2NyaXB0b3IodHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbjxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFZhbGlkYXRpb25VbnNhZmUobmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyBhcyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZT4obmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBDb2x1bW5Nb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPiwgQ29sdW1uVmFsdWUgPSBUYWJsZU1vZGVsW1Byb3BlcnR5XT4ocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRDb2x1bW48UHJvcGVydHksIENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnksIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCwgQ29sdW1uVmFsdWU+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlPihjb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5XT4sIFRhYmxlTW9kZWwsIFRhYmxlTW9kZWxbUHJvcGVydHldPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5FbnVtPFByb3BlcnR5S2V5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPj4ocHJvcGVydHk6IFByb3BlcnR5S2V5LCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkVudW0ocHJvcGVydHksIGVudW1EZXNjKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uVW5zYWZlPENvbHVtbk1vZGVsID0gYW55Pihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbnMoLi4ucHJvcGVydGllczogKGtleW9mIFRhYmxlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbnMoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0KHByb3BlcnR5OiBTb3J0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZVNvcnQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNvcnQocHJvcGVydHk6IFNvcnRzLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkU29ydChwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KHByb3BlcnR5OiBTb3J0cywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnQocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IFNvcnRzLCBhc2NlbmRpbmc/OiBib29sZWFuLCBlbmFibGVkPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnQocHJvcGVydHksIGFzY2VuZGluZywgZW5hYmxlZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgYXNjZW5kaW5nPzogYm9vbGVhbiwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5LCBhc2NlbmRpbmcsIGVuYWJsZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzKC4uLnByb3BlcnRpZXM6IFNvcnRzW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0c1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydHMoLi4ucHJvcGVydGllczogU29ydHNbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aG91dERlZmF1bHRTb3J0cygpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aG91dERlZmF1bHRTb3J0cygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IGFueT4ocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWwgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBUYWJsZU1vZGVsW0ZpbHRlcnNdIDogbmV2ZXI+KHByb3BlcnR5OiBGaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyTG9va3VwPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IG5ldmVyLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICAgICAgcHJvcGVydHk6IEZpbHRlcnMsXG4gICAgICAgIHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZSwgYW55LCBhbnk+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IGtleW9mIEZpbHRlck1vZGVsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KHByb3BlcnR5LCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2UsIGFueSwgYW55PixcbiAgICAgICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckxvb2t1cFVuc2FmZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHByb3ZpZGVyLCBvcHRpb25zVmFsdWVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW08RW51bT4ocHJvcGVydHk6IEZpbHRlcnMsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBFeHRyYWN0PEZpbHRlcnMsIFByb3BlcnR5PixcbiAgICAgICAgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sXG4gICAgICAgIGZvcmNlU2ltcGxlID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHksIEZpbHRlck1vZGVsPihwcm9wZXJ0eSwgZGlzcGxheVR5cGUsIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiBFeHRyYWN0PEZpbHRlcnMsIGtleW9mIFRhYmxlTW9kZWw+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHksIGRpc3BsYXlUeXBlLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBGaWx0ZXJzLCBmaWx0ZXI6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5LCBmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IGtleW9mIEZpZWxkc01hbmFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBUYWJsZXZpZXdNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBBZGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQgYXMgdW5rbm93biBhcyBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsID0gRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkIGFzIHVua25vd24gYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkcyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgRmllbGRzTWFuYWdlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHAgPT4gdGhpcy5hZGRGaWVsZChwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcpOiBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxGaWVsZHNNYW5hZ2VNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRmllbGRUb0VkaXRBbmRBZGQ8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIGFueSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KSB7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT59IG9wdHMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGNvbmZpZ3VyaW5nIHR5cGUgYW5kL29yIHNlcnZpY2UgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsXG4gICAgICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgICAgIExvb2t1cE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPiA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sXG4gICAgICAgIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgb3B0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogW1VOU0FGRV0gQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBVTlNBRkUgYmVjYXVzZSBwcm9wZXJ0eSBpcyBub3QgdHlwZS1jaGVja2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIEZpZWxkVmFsdWUgPSBMb29rdXBNb2RlbD4ocHJvcGVydHk6IHN0cmluZywgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgb3B0cyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQgYXMgdW5rbm93biBhcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLCBFbnVtIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LFxuICAgICAgICBvcHRpb25zPzogQXJyYXk8RW51bT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEZpZWxkc01hbmFnZU1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAvLyBjYXN0IGlzIG5lZWRlZCwgYmVjYXVzZSB0aGUgcGFyZW50IG1vZGVsIG9mIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0IGlzIGV4cGVjdGVkIHRvIGJlIFRhYmxldmlld01vZGVsLCBidXQgaXQgY2Fubm90IGJlIGluIGNhc2UgdGhlcmUgYXJlIGRpZmZlcmVudCB0eXBlcyBhY3Jvc3MgZGV0YWlscywgYWRkIG9yIGVkaXRcbiAgICAgICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIGFueSwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLFxuICAgICAgICBTZXJ2aWNlLFxuICAgICAgICBGaWVsZE1vZGVsID0gQXJyYXlJdGVtVHlwZTxGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldXG4gICAgPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBGaWVsZHNNYW5hZ2VNb2RlbD4odGhpcy5fbW9kZWwuY29weSgpKTtcbiAgICAgICAgdGFibGV2aWV3Ll90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fYWRkRWRpdG9yID0gdGhpcy5fYWRkRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9lZGl0RWRpdG9yID0gdGhpcy5fZWRpdEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgcmV0dXJuIHRhYmxldmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIExvY2FsaXphdGlvbk1vZGVsID0gQXJyYXlJdGVtVHlwZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPExvY2FsaXphdGlvbk1vZGVsPixcbiAgICAgICAgbG9jYWxlUHJvcGVydHk6IGtleW9mIExvY2FsaXphdGlvbk1vZGVsXG4gICAgKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWRVbnNhZmU8TG9jYWxpemF0aW9uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LCBsb2NhbGVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzTG9jYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aExvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuZGV0YWlsc0VkaXRvci5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHksIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5lZGl0RWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCBleHRlbmRzIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICBzdXBlcihtb2RlbCk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KHRoaXMubW9kZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBoaWRkZW4gc3RhdGUgdG8gY29sdW1uIHdpdGggZ2l2ZW4gcHJvcGVydHlcbiAgICAgKiBlcXVhbHMgdG8gYmUgcmVtb3ZpbmcgaW4gYXV0byBhbmQgYmFzZSB0YWJsZXZpZXcgZGVzY3JpcHRvclxuICAgICAqICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRW50aXR5Rm9yVHJhbnNsYXRpb25zKGkxOG5CYXNlS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUubW9kZWwud2l0aEkxOG5CYXNlKGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5tb2RlbC53aXRoSTE4bkJhc2UoaTE4bkJhc2VLZXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiB0YWJsZXZpZXcgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3JJbnQodGhpcy5tb2RlbC5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { TableviewDescriptorInst, TableviewDynamicDescriptorInt } from './tableview.descriptor';\nexport function tableviewDescriptor(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDescriptorMultiModel(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDynamicDescriptor(modelOrOpts) {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor(modelOrOpts?.id, modelOrOpts?.title, modelOrOpts?.i18nBase));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXctZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSS9HLE9BQU8sRUFBQyx1QkFBdUIsRUFBMEMsNkJBQTZCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQThDdEksTUFBTSxVQUFVLG1CQUFtQixDQUMvQixXQUFxSTtBQUNySSw2REFBNkQ7QUFDN0QsSUFBcUc7SUFFckcsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLEVBQVMsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7U0FBTSxJQUFJLFdBQVcsWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksdUJBQXVCLENBQTRFLFdBQVcsQ0FBQyxDQUFDO0lBQy9ILENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLENBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3SSxDQUFDO0FBQ0wsQ0FBQztBQWlFRCxNQUFNLFVBQVUsNkJBQTZCLENBU3pDLFdBRStJO0FBQy9JLDZEQUE2RDtBQUM3RCxJQUFnSjtJQUVoSixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssRUFBUyxDQUFDLENBQUM7SUFDbEksQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSx1QkFBdUIsQ0FBNEUsV0FBVyxDQUFDLENBQUM7SUFDL0gsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssQ0FBUSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdJLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxXQUF3RztJQUV4RyxPQUFPLFdBQVcsWUFBWSxlQUFlO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLDZCQUE2QixDQUFDLFdBQVcsQ0FBQztRQUNoRCxDQUFDLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLGVBQWUsQ0FBTSxXQUFXLEVBQUUsRUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFlLEVBQUUsV0FBVyxFQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ2hLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0cywgVHlwZURlc2NyaXB0b3IsIG1vZGVsfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCwgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHMsIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50fSBmcm9tICcuL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxudHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlU29ydHNGaWx0ZXJzUGFyZW50T3B0c1R5cGU8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0ge1xuICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgc29ydHNUeXBlPzogVHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPEZpbHRlcnM+O1xuICAgIHBhcmVudEVkaXRvclR5cGU/OlxuICAgICAgICB8IFR5cGVEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPlxuICAgICAgICB8IE1vZGVsRGVzY3JpcHRvcjxQYXJlbnRFZGl0b3JNb2RlbD5cbiAgICAgICAgfCBFZGl0b3JEZXNjcmlwdG9ySW5zdDxQYXJlbnRFZGl0b3JNb2RlbCwgYW55PlxuICAgICAgICB8IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnksIGFueSwgYW55LCBhbnksIFBhcmVudEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxNb2RlbD47XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFxuICAgIE1vZGVsLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnMsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwsXG4gICAgVGFibGVNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbFxuPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3I8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsIFRhYmxlTW9kZWwgPSBNb2RlbD4oXG4gICAgb3B0czogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvcjxNb2RlbCwgU29ydHMgPSBrZXlvZiBNb2RlbCwgRmlsdGVycyA9IGtleW9mIE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCwgVGFibGVNb2RlbCA9IE1vZGVsPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgTW9kZWwsIE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pIHtcbiAgICBpZiAobW9kZWxPck9wdHMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+KG1vZGVsPE1vZGVsPigpKTtcbiAgICB9IGVsc2UgaWYgKG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWxPck9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWw8TW9kZWw+KG1vZGVsT3JPcHRzKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbENyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5cbmV4cG9ydCB0eXBlIFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWxDcmVhdGVPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiAmIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHM8TW9kZWw+O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbCwgVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbDxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbFxuPihcbiAgICBvcHRzOiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG1vZGVsT3JPcHRzPzpcbiAgICAgICAgfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+XG4gICAgICAgIHwgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU11bHRpTW9kZWxXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKSB7XG4gICAgaWYgKG1vZGVsT3JPcHRzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPihtb2RlbDxNb2RlbD4oKSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsT3JPcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsPE1vZGVsPihtb2RlbE9yT3B0cykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9yKFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPGFueT4gfCBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxhbnk+XG4pOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgcmV0dXJuIG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yXG4gICAgICAgID8gbmV3IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50KG1vZGVsT3JPcHRzKVxuICAgICAgICA6IG5ldyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludChuZXcgTW9kZWxEZXNjcmlwdG9yPGFueT4obW9kZWxPck9wdHM/LmlkIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LnRpdGxlIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LmkxOG5CYXNlIGFzIHN0cmluZykpO1xufVxuIl19","import { GetterPipe } from '@mediusinc/mng-commons/core';\nexport function convertDataToStringWithDelimiter(data, delimiter, descriptor, translate) {\n const replaceNullValue = (key, value) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row) => descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n }\n else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter))\n ].join('\\r\\n');\n}\nexport function saveFileAs(blob, filename) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n }));\n document.body.removeChild(link);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvZmlsZXMtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl2RCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBVyxFQUFFLFNBQWlCLEVBQUUsVUFBa0QsRUFBRSxTQUEyQjtJQUM1SixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDcEMsT0FBTztRQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDcEksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDckIsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPO2FBQ25CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNWLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUN2QjtLQUNKLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUNuRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhDLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ3BCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQ0wsQ0FBQztJQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge0dldHRlclBpcGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKGRhdGE6IGFueVtdLCBkZWxpbWl0ZXI6IHN0cmluZywgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVwbGFjZU51bGxWYWx1ZSA9IChrZXk6IGFueSwgdmFsdWU6IGFueSkgPT4gKHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSk7XG4gICAgY29uc3QgZ2V0dGVyUGlwZSA9IG5ldyBHZXR0ZXJQaXBlKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZGVzY3JpcHRvci50YWJsZS5jb2x1bW5zLm1hcChjb2wgPT4gdHJhbnNsYXRlLmluc3RhbnQoZGVzY3JpcHRvci5tb2RlbC5pMThuQmFzZUtleSArICcucHJvcGVydGllcy4nICsgY29sLnByb3BlcnR5KSkuam9pbihkZWxpbWl0ZXIpLFxuICAgICAgICAuLi5kYXRhLm1hcCgocm93OiBhbnkpID0+XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnRhYmxlLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAubWFwKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdldHRlclBpcGUudHJhbnNmb3JtKHJvd1tjb2x1bW4ucHJvcGVydHldLCBjb2x1bW4uZ2V0dGVyLCByb3cpLCByZXBsYWNlTnVsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyb3dbY29sdW1uLnByb3BlcnR5XSwgcmVwbGFjZU51bGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKGRlbGltaXRlcilcbiAgICAgICAgKVxuICAgIF0uam9pbignXFxyXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZUFzKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgbGluay5ocmVmID0gYmxvYlVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgbGluay5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZpZXc6IHdpbmRvd1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xufVxuIl19","import { Injector, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams } from '@mediusinc/mng-commons/core';\nimport { actionGetProviderCfgObj } from '../../action/descriptors/action-descriptor.factory';\nimport { actionEditorGetProviderCfgObj } from '../../action/descriptors/action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst, actionEditorCancel } from '../../action/descriptors/action-editor.descriptor';\nimport { actionLink } from '../../action/descriptors/action-link-descriptor.factory';\nimport { ActionDescriptorInst } from '../../action/descriptors/action.descriptor';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { DataProviderExecutor } from '../../action/services/data-provider-executor.service';\nimport { DATA_LANGUAGE_DROPDOWN_COMPONENT_IT } from '../../action/services/tokens/data-language-dropdown.token';\nimport { convertDataToStringWithDelimiter, saveFileAs } from './files-export';\nexport var TableviewDefaultActionsEnum;\n(function (TableviewDefaultActionsEnum) {\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Details\"] = 0] = \"Details\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Add\"] = 1] = \"Add\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"EditOnDetails\"] = 3] = \"EditOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Delete\"] = 4] = \"Delete\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"DeleteOnDetails\"] = 5] = \"DeleteOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Refresh\"] = 6] = \"Refresh\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Export\"] = 7] = \"Export\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportJson\"] = 8] = \"ExportJson\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportCsv\"] = 9] = \"ExportCsv\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"LocalizationLanguageSelect\"] = 10] = \"LocalizationLanguageSelect\";\n})(TableviewDefaultActionsEnum || (TableviewDefaultActionsEnum = {}));\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\nexport function tableviewGetDefaultActions() {\n return [...tableviewDefaultActions];\n}\nexport function tableviewCreateDefaultActions(tableview, defaultActions, defaultActionsOverrides, injector) {\n return (defaultActions ?? tableviewGetDefaultActions())\n .map(t => tableviewCreateDefaultAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null);\n}\nexport function tableviewCreateDefaultAction(type, tableview, defaultActions, defaultActionsOverrides, injector) {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, { injector });\n case TableviewDefaultActionsEnum.Edit:\n return tableviewActionEditOnTable(tableview.model, tableview.editEditor, { table: tableview.table, injector });\n case TableviewDefaultActionsEnum.Delete:\n return tableviewActionDeleteOnTable(tableview.model, { table: tableview.table, injector });\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewActionAddOnTable(tableview.model, tableview.addEditor, { injector });\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewActionLocalizationLangSelectOnTable(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewActionRefreshOnTable(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewActionExportOnTable(tableview, { injector: injector, defaultActions: defaultActions })\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit) ? tableviewActionEditOnDetails(tableview.model, { injector }) : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewActionDeleteOnDetails(tableview.model, { injector }) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\nfunction getInjector(injector) {\n return injector === undefined ? inject(Injector) : injector;\n}\nfunction getRouteData(injector) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data;\n}\nexport const tableviewActionEditorDetailsActionName = 'details';\nexport const tableviewActionEditorDetailsRoute = ':itemId';\nexport function tableviewActionDetailsOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorDetailsActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);\n action.withRouteTrigger(tableviewActionEditorDetailsRoute);\n action.withEditorActions([actionEditorCancel(action)]);\n action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorAddActionName = 'add';\nexport const tableviewActionEditorAddRoute = 'add';\nexport function tableviewActionAddOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasAdd) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorAddActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withRouteTrigger(tableviewActionEditorAddRoute)\n .withButtonOpts({\n icon: 'pi pi-plus'\n });\n action.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n action.withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorEditActionName = 'edit';\nexport const tableviewActionEditorEditRoute = ':itemId/edit';\nexport function tableviewActionEditOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasEdit) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorEditActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.Small\n }\n })\n .withRouteTrigger(tableviewActionEditorEditRoute)\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport function tableviewActionEditOnDetails(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n const linkAction = actionLink(tableviewActionEditorEditActionName, { model: model });\n linkAction\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit')\n .withQueryParams({}, 'merge')\n .withButtonOpts({\n icon: 'pi pi-pencil',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return linkAction;\n}\nexport const tableviewActionDeleteActionName = 'delete';\nexport function tableviewActionDeleteOnTable(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {\n const action = new ActionDescriptorInst(tableviewActionDeleteActionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n model: model\n })\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n size: StyleSizeEnum.Small,\n level: StyleLevelEnum.Danger\n }\n })\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withRunConfirmation()\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n return action;\n }\n return null;\n}\nexport function tableviewActionDeleteOnDetails(model, opts) {\n const action = tableviewActionDeleteOnTable(model, opts);\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx => dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n }))\n : null)\n .withButtonOpts({\n ...action.button,\n label: undefined,\n style: {\n ...action.button?.style,\n size: StyleSizeEnum.Normal\n }\n });\n return action;\n }\n return null;\n}\nexport function tableviewActionExportOnTable(descriptor, opts) {\n const exportAction = new ActionDescriptorInst('export', {\n model: descriptor.model\n })\n .withButton(undefined, 'pi pi-download')\n .withSubactionsAsMenu();\n const subactions = [];\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))\n subactions.push(tableviewActionExportJsonOnTable(descriptor, opts));\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))\n subactions.push(tableviewActionExportCsvOnTable(descriptor, opts));\n exportAction.withSubactions(...subactions);\n exportAction.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n return exportAction;\n}\nexport function tableviewActionExportJsonOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], { type: 'application/json;charset=utf-8' });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-code')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionExportCsvOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-file')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionRefreshOnTable(descriptor, opts) {\n const action = new ActionDescriptorInst('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withNotifications({ runOnSuccess: false })\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)\n .withButtonOpts({\n icon: 'pi pi-refresh',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return action;\n}\nexport function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst('translator', {\n model: descriptor.model\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl0SSxPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFB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O2FBQzlELG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCB7aW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5lZGl0RWRpdG9yLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgLy8gdGFibGUgdG9vbGJhciBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlKHRhYmxldmlldy5tb2RlbCwgdGFibGV2aWV3LmFkZEVkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uUmVmcmVzaE9uVGFibGUodGFibGV2aWV3Lm1vZGVsKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpXG4gICAgICAgICAgICAgICAgPyB0YWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlKHRhYmxldmlldywge2luamVjdG9yOiBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnM6IGRlZmF1bHRBY3Rpb25zfSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCkgPyB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzKHRhYmxldmlldy5tb2RlbCwge2luamVjdG9yfSkgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgLy8gc3ViYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3Y6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbmplY3RvcihpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdG9yID09PSB1bmRlZmluZWQgPyBpbmplY3QoSW5qZWN0b3IpIDogaW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlRGF0YShpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCkge1xuICAgIHJldHVybiBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChBY3RpdmF0ZWRSb3V0ZSk/LnNuYXBzaG90LmRhdGEgYXMgVGFibGV2aWV3Um91dGVEYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUgPSAnZGV0YWlscyc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc1JvdXRlID0gJzppdGVtSWQnO1xuXG50eXBlIFRhYmxldmlld0FjdGlvbkRldGFpbHNPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZXRhaWxzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIFRhYmxlTW9kZWwsIHVuZGVmaW5lZCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckFkZFJvdXRlKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGx1cydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIGFjdGlvbi53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0QWN0aW9uTmFtZSA9ICdlZGl0JztcbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0Um91dGUgPSAnOml0ZW1JZC9lZGl0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPiA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4gfCBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueSwgRWRpdE1vZGVsPjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZU9wdHNUeXBlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I6IHRydWUsXG4gICAgICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGVuY2lsJyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiBTdHlsZVNpemVFbnVtLlNtYWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgIC53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsc09wdHNUeXBlID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsczxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAocm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zICYmICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtBY3Rpb24gPSBhY3Rpb25MaW5rKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7bW9kZWw6IG1vZGVsfSk7XG4gICAgbGlua0FjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXBlbmNpbCcsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGxpbmtBY3Rpb247XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25EZWxldGVBY3Rpb25OYW1lID0gJ2RlbGV0ZSc7XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4odGFibGV2aWV3QWN0aW9uRGVsZXRlQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uU21hbGwsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5EYW5nZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhSdW5Db25maXJtYXRpb24oKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHNPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIE1vZGVsLCBNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlPE1vZGVsLCBNb2RlbCwgU2VydmljZT4obW9kZWwsIG9wdHMpIGFzIHVua25vd24gYXMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuRGVsZXRlT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8uY2xvc2VFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24uYnV0dG9uLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLmJ1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uTm9ybWFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbih1bmRlZmluZWQsICdwaSBwaS1kb3dubG9hZCcpXG4gICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgY29uc3Qgc3ViYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlKGRlc2NyaXB0b3IsIG9wdHMpKTtcbiAgICBpZiAob3B0cz8uZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBvcHRzPy5kZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydENzdk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuXG4gICAgZXhwb3J0QWN0aW9uLndpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnMpO1xuICAgIGV4cG9ydEFjdGlvbi53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhCdXR0b24odW5kZWZpbmVkLCAncGkgcGktY29kZScpXG4gICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FeHBvcnRDc3ZPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoTm90aWZpY2F0aW9ucyh7cnVuT25TdWNjZXNzOiBmYWxzZX0pXG4gICAgICAgIC53aXRoQnV0dG9uKHVuZGVmaW5lZCwgJ3BpIHBpLWZpbGUnKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXJlZnJlc2gnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBsZXZlbDogU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG59XG5cbnR5cGUgVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uTG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { tableviewCreateDefaultActions, tableviewGetDefaultActions } from './tableview-default-actions';\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder {\n constructor(_descriptor, _dataProvider, injector) {\n this._descriptor = _descriptor;\n this._dataProvider = _dataProvider;\n this.injector = injector;\n this.defaultActions = tableviewGetDefaultActions().map(a => ({ type: a, descriptor: undefined }));\n this._customActions = [];\n }\n prepareSetterParams() {\n return { descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector };\n }\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn) {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn) {\n adjustFn(this._descriptor);\n return this;\n }\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn) {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn) {\n adjustFn(this._dataProvider);\n return this;\n }\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn) {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n /**\n * Associates a fetch function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the fetch API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of fetch function on API service.\n */\n withDataServiceFetchFn(serviceFn, itemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withFetch((itemId, service) => service[serviceFn]({ [itemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Associates a create function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the create API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} serviceFnItemParamName The parameter name for item used as the key within the request object of create function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, AddModel>} [mapFetchItem] Map function to transform model from fetch to form's add model.\n */\n withDataServiceCreateFn(serviceFn, serviceFnItemParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withCreate((item, service) => service[serviceFn]({ [serviceFnItemParamName]: item }));\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToCreateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates an update function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the update API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} fnItemParamName The parameter name for item used as the key within the request object of update function on API service.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} [fnItemIdParamName] The parameter name for itemId used as the key within the request object of update function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, EditModel>} [mapFetchItem] Map function to transform model from fetch to form' edit model.\n */\n withDataServiceUpdateFn(serviceFn, fnItemParamName, fnItemIdParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withUpdate((id, item, service) => {\n const params = { [fnItemParamName]: item };\n if (fnItemIdParamName) {\n params[fnItemIdParamName] = id;\n }\n return service[serviceFn](params);\n });\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToUpdateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates a delete function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the delete API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of delete function on API service.\n */\n withDataServiceDeleteFn(serviceFn, fnItemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withDelete((itemId, service) => service[serviceFn]({ [fnItemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions() {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService , ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride(type, fn) {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n /**\n * Adds a custom action.\n *\n * @deprecated Use on of {withActionOnTable}, {withActionOnDetailsEditor}, {withActionOnEditEditor} or {withActionOnAddEditor} instead.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on table row or top (header or toolbar).\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnTable(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.READ]);\n if (![\n ActionPositionEnum.ToolbarLeft,\n ActionPositionEnum.ToolbarRight,\n ActionPositionEnum.TableHeader,\n ActionPositionEnum.RowInline,\n ActionPositionEnum.RowClick\n ].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on table (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on details editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnDetailsEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on details (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on edit editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnEditEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.EDIT]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on edit (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on add editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnAddEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.ADD]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on add (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * @internal\n *\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, TableModel, AddModel, EditModel, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return {\n actions: tableviewCreateDefaultActions(this._descriptor, this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type), this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce((acc, a) => ({\n ...acc,\n [a.type]: a.descriptor\n }), {}), this.injector).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWlucHV0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctaW5wdXQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBR0gsb0JBQW9CLEVBSXZCLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sK0RBQStELENBQUM7QUFFL0csT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHcEYsT0FBTyxFQUE4Qiw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBaUJuSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFlOUIsWUFDWSxXQUF1QixFQUN2QixhQUEyQixFQUNsQixRQUFrQjtRQUYzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTi9CLG1CQUFjLEdBQW9CLDBCQUEwQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxtQkFBYyxHQUFnQyxFQUFFLENBQUM7SUFNL0QsQ0FBQztJQUVJLG1CQUFtQjtRQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09B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aW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZSxcbiAgICBDbGFzc0Z1bmN0aW9uS2V5c1dpdGhQYXJhbUFuZFJldHVyblR5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBJZFR5cGUsXG4gICAgTnVsbGFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy90YWJsZXZpZXctYWN0aW9uLWRlZmF1bHQtY2F0ZWdvcmllcy5tb2RlbCc7XG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGV9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXR9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sIHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zLCB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9uc30gZnJvbSAnLi90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0ge2Rlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyOyBpbmplY3RvcjogSW5qZWN0b3J9O1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4gPSAoXG4gICAgcGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbikgPT4gTnVsbGFibGU8XG4gICAgfCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuICAgIHwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIGFueSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuPjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IChwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gRGVzY3JpcHRvcjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0gKHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiBEYXRhUHJvdmlkZXI7XG5cbnR5cGUgRGVmYXVsdEFjdGlvbiA9IHtcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW07XG4gICAgZGVzY3JpcHRvcjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFRoZSBgVGFibGV2aWV3QnVpbGRlcmAgY2xhc3MgaXMgdXNlZCB0byBidWlsZCBhIHRhYmxldmlldyBjb25maWd1cmF0aW9uLlxuICogSXQgYWxsb3dzIHlvdSB0byBzZXQgdmFyaW91cyBvcHRpb25zIHN1Y2ggYXMgdGhlIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIsXG4gKiBkZWZhdWx0IGFjdGlvbnMsIGFuZCBjdXN0b20gYWN0aW9ucyBmb3IgdGhlIHRhYmxldmlldy5cbiAqXG4gKiBAdHlwZXBhcmFtIE1vZGVsIC0gVGhlIG1haW4gbW9kZWwgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBBUEkgc2VydmljZSB0eXBlLlxuICogQHR5cGVwYXJhbSBEZXNjcmlwdG9yIC0gVGhlIGRlc2NyaXB0b3IgdHlwZS5cbiAqIEB0eXBlcGFyYW0gRGF0YVByb3ZpZGVyIC0gVGhlIGRhdGEgcHJvdmlkZXIgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU29ydHMgLSBUaGUgc29ydCB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgc29ydCBrZXlzLlxuICogQHR5cGVwYXJhbSBGaWx0ZXJzIC0gVGhlIGZpbHRlciB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgZmlsdGVyIGtleXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBEZXNjcmlwdG9yIGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICBEYXRhUHJvdmlkZXIgZXh0ZW5kcyBJRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IE1vZGVsXG4+IHtcbiAgICBwcml2YXRlIGRlZmF1bHRBY3Rpb25zOiBEZWZhdWx0QWN0aW9uW10gPSB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9ucygpLm1hcChhID0+ICh7dHlwZTogYSwgZGVzY3JpcHRvcjogdW5kZWZpbmVkfSkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT5bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2Rlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gICAgICAgIHByaXZhdGUgX2RhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICAgICkge31cblxuICAgIHByaXZhdGUgcHJlcGFyZVNldHRlclBhcmFtcygpOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4ge1xuICAgICAgICByZXR1cm4ge2Rlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3IsIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLCBpbmplY3RvcjogdGhpcy5pbmplY3Rvcn07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgZGVzY3JpcHRvci4gSXQgc2hvdWxkIGFjY2VwdCBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZXNjcmlwdG9yKGZuOiBUdkJ1aWxkZXJEZXNjcmlwdG9yU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVzY3JpcHRvciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRqdXN0cyB0aGUgZGVzY3JpcHRvciB1c2luZyB0aGUgcHJvdmlkZWQgYWRqdXN0IGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoZGVzY3JpcHRvcjogRGVzY3JpcHRvcikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYERlc2NyaXB0b3JgLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFkanVzdERlc2NyaXB0b3IoYWRqdXN0Rm46IChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgICAgIGFkanVzdEZuKHRoaXMuX2Rlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkYXRhIHByb3ZpZGVyIGZvciB0aGUgVHZCdWlsZGVyIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBkYXRhIHByb3ZpZGVyLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVByb3ZpZGVyKGZuOiBUdkJ1aWxkZXJEYXRhUHJvdmlkZXJTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkanVzdHMgdGhlIGRhdGEgcHJvdmlkZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGFkanVzdCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGF0YSBwcm92aWRlci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgRGF0YVByb3ZpZGVyYC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhBZGp1c3REYXRhUHJvdmlkZXIoYWRqdXN0Rm46IChkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcikgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICBhZGp1c3RGbih0aGlzLl9kYXRhUHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3RzIHRoZSBkYXRhIHByb3ZpZGVyIGFuZC9vciBkZXNjcmlwdG9yIHVzaW5nIHRoZSBwcm92aWRlZCBhZGp1c3QgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRhdGEgcHJvdmlkZXIuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWRqdXN0KGFkanVzdEZuOiAocGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgYWRqdXN0Rm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGVzIGEgZmV0Y2ggZnVuY3Rpb24gZm9yIGEgZGF0YSBwcm92aWRlciBBUEkgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U2VydmljZUZufSBzZXJ2aWNlRm4gVGhlIGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZpY2UgY2xhc3MgdGhhdCBwZXJmb3JtcyB0aGUgZmV0Y2ggQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBmZXRjaCBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVNlcnZpY2VGZXRjaEZuPFNlcnZpY2VGbiBleHRlbmRzIENsYXNzRnVuY3Rpb25LZXlzV2l0aFBhcmFtQW5kUmV0dXJuVHlwZTxTZXJ2aWNlLCBhbnksIE9ic2VydmFibGU8TW9kZWw+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBpdGVtSWRQYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgSWRUeXBlPlxuICAgICk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVByb3ZpZGVyIGluc3RhbmNlb2YgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhGZXRjaCgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tpdGVtSWRQYXJhbU5hbWVdOiBpdGVtSWR9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGNyZWF0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBjcmVhdGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBVbmRlZmluZWQ8RWRpdE1vZGVsPj59IHNlcnZpY2VGbkl0ZW1QYXJhbU5hbWUgVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtIHVzZWQgYXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIGNyZWF0ZSBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEFkZE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0ncyBhZGQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlQ3JlYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBzZXJ2aWNlRm5JdGVtUGFyYW1OYW1lOiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIEFkZE1vZGVsPixcbiAgICAgICAgbWFwRmV0Y2hJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQWRkTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aENyZWF0ZSgoaXRlbSwgc2VydmljZSkgPT4gc2VydmljZVtzZXJ2aWNlRm5dKHtbc2VydmljZUZuSXRlbVBhcmFtTmFtZV06IGl0ZW19KSk7XG5cbiAgICAgICAgICAgIGlmIChtYXBGZXRjaEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShtYXBGZXRjaEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc29jaWF0ZXMgYW4gdXBkYXRlIGZ1bmN0aW9uIGZvciBhIGRhdGEgcHJvdmlkZXIgQVBJIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1NlcnZpY2VGbn0gc2VydmljZUZuIFRoZSBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2aWNlIGNsYXNzIHRoYXQgcGVyZm9ybXMgdGhlIHVwZGF0ZSBBUEkgY2FsbC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgYSBrZXkgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhIHBhcmFtZXRlciBhbmQgcmV0dXJuIGFuIE9ic2VydmFibGUuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIFVuZGVmaW5lZDxFZGl0TW9kZWw+Pn0gZm5JdGVtUGFyYW1OYW1lIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgaXRlbSB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiB1cGRhdGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT59IFtmbkl0ZW1JZFBhcmFtTmFtZV0gVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtSWQgdXNlZCBhcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdCBvYmplY3Qgb2YgdXBkYXRlIGZ1bmN0aW9uIG9uIEFQSSBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgRWRpdE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0nIGVkaXQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlVXBkYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1QYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgRWRpdE1vZGVsPixcbiAgICAgICAgZm5JdGVtSWRQYXJhbU5hbWU/OiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT4sXG4gICAgICAgIG1hcEZldGNoSXRlbT86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEVkaXRNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFQcm92aWRlciBpbnN0YW5jZW9mIFRhYmxldmlld0RhdGFQcm92aWRlckluc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoVXBkYXRlKChpZCwgaXRlbSwgc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1tmbkl0ZW1QYXJhbU5hbWVdOiBpdGVtfTtcbiAgICAgICAgICAgICAgICBpZiAoZm5JdGVtSWRQYXJhbU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ZuSXRlbUlkUGFyYW1OYW1lXSA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZVtzZXJ2aWNlRm5dKHBhcmFtcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG1hcEZldGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKG1hcEZldGNoSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGRlbGV0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBkZWxldGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBkZWxldGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlRGVsZXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1JZFBhcmFtTmFtZTogQ2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aERlbGV0ZSgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tmbkl0ZW1JZFBhcmFtTmFtZV06IGl0ZW1JZH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCB0aGUgZGVmYXVsdCB0YWJsZXZpZXcgYWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aE5vRGVmYXVsdEFjdGlvbnMoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZm9yRWFjaChhID0+IChhLmRlc2NyaXB0b3IgPSBudWxsKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGRlZmF1bHQgYWN0aW9ucyBzcGVjaWZpZWQgaW4gcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW119IHR5cGVzIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBhZGQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGVmYXVsdEFjdGlvbnMoLi4udHlwZXM6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdKTogdGhpcyB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbmQoYSA9PiBhLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbj8uZGVzY3JpcHRvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdG9yID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXX0gdHlwZXMgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhvdXREZWZhdWx0QWN0aW9ucyguLi50eXBlczogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnMuZmluZChhID0+IGEudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtfSB0eXBlIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBvdmVycmlkZS5cbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSAsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlZmF1bHRBY3Rpb25PdmVycmlkZTxBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgdHlwZTogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPE1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25SdW5JbnB1dCwgQWN0aW9uUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9ucy5maW5kKGEgPT4gYS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSkgPz8gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY3VzdG9tIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBvbiBvZiB7d2l0aEFjdGlvbk9uVGFibGV9LCB7d2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcn0sIHt3aXRoQWN0aW9uT25FZGl0RWRpdG9yfSBvciB7d2l0aEFjdGlvbk9uQWRkRWRpdG9yfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gdGFibGUgcm93IG9yIHRvcCAoaGVhZGVyIG9yIHRvb2xiYXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uVGFibGU8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgVGFibGVNb2RlbCB8IHVuZGVmaW5lZCA9IFRhYmxlTW9kZWwsIEFjdGlvblJ1blJlc3VsdCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgQWN0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gZm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2tcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gdGFibGUgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGRldGFpbHMgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uSW5wdXQgZXh0ZW5kcyBNb2RlbCA9IE1vZGVsLCBBY3Rpb25SZXN1bHQgPSBNb2RlbD4oXG4gICAgICAgIGZuOiBUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvbklucHV0LCBBY3Rpb25SZXN1bHQsIEFjdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gZGV0YWlscyAoJHthY3Rpb24ucG9zaXRpb259KSwgZGVmaW5lIHZhbGlkIHBvc2l0aW9uLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gZWRpdCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25FZGl0RWRpdG9yPEFjdGlvbk1vZGVsID0gTW9kZWwsIEFjdGlvblNlcnZpY2UgPSBTZXJ2aWNlLCBBY3Rpb25JbnB1dCBleHRlbmRzIEVkaXRNb2RlbCA9IEVkaXRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICBpZiAoIVtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0LCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHRdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEFjdGlvbiAke2FjdGlvbi5hY3Rpb25OYW1lTG9uZ30gY2FuIG5vdCBiZSBwb3NpdGlvbmVkIG9uIGVkaXQgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGFkZCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25BZGRFZGl0b3I8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgQWRkTW9kZWwgPSBBZGRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BRERdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gYWRkICgke2FjdGlvbi5wb3NpdGlvbn0pLCBkZWZpbmUgdmFsaWQgcG9zaXRpb24uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21BY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKlxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBJVGFibGV2aWV3LlxuICAgICAqIERPIE5PVCBDQUxMIHRoaXMgd2l0aGluIHRhYmxldmlldyBjcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24hXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtUYWJsZXZpZXdJbnB1dDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IC0gVGhlIGJ1aWx0IElUYWJsZXZpZXcgaW5zdGFuY2UuXG4gICAgICovXG4gICAgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiA8VGFibGV2aWV3SW5wdXQ8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+PntcbiAgICAgICAgICAgIGFjdGlvbnM6IHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+LFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZmlsdGVyKGEgPT4gYS5kZXNjcmlwdG9yICE9PSBudWxsKS5tYXAoYSA9PiBhLnR5cGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihhID0+IGEuZGVzY3JpcHRvciAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjYywgYSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2EudHlwZV06IGEuZGVzY3JpcHRvciFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJlY29yZDxudW1iZXIsIEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+Pnt9XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgKS5jb25jYXQodGhpcy5fY3VzdG9tQWN0aW9ucyksXG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIGRlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3JcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","import { Injector, inject } from '@angular/core';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { TableviewDescriptorInst } from '../descriptors/tableview.descriptor';\nimport { TableviewInputBuilder } from './tableview-input-builder';\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} [opts.service] - The class type of the service.\n * @param {TypeDescriptor<Sorts> | ModelDescriptor<Sorts>} [opts.sortsType] - Type of sorts\n * @param {TypeDescriptor<Filters> | ModelDescriptor<Filters>} [opts.filtersType] - Type of filters.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\nexport function tableviewMultiModel(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model, opts), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLL0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFDLHVCQUF1QixFQUF5QyxNQUFNLHFDQUFxQyxDQUFDO0FBRXBILE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWhFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUNyQixLQUE2QixFQUM3QixJQUlDLEVBQ0QsT0FFUztJQUVULE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBT3ZDLElBQUksdUJBQXVCLENBQXdCLEtBQUssQ0FBQyxFQUFFLElBQUkseUJBQXlCLENBQWlDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3SixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBUUQsTUFBTSxVQUFVLG1CQUFtQixDQVUvQixLQUE2QixFQUM3QixJQUF3RixFQUN4RixPQWFTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FZckMsSUFBSSx1QkFBdUIsQ0FBaUYsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUN4SCxJQUFJLHlCQUF5QixDQUFnRyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQzNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NlcnZpY2VDbGFzc09wdFR5cGUsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3QsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0Q29uc3RydWN0b3JPcHRzfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGV9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctZGVzY3JpcHRvci1maWVsZHMtbWFuYWdlLWhlbHBlci50eXBlJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXRCdWlsZGVyfSBmcm9tICcuL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGFibGV2aWV3IHdpdGggdGhlIGdpdmVuIG1vZGVsLCBzZXJ2aWNlLlxuICpcbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gbW9kZWwgLSBUaGUgbW9kZWwgZGVzY3JpcHRvci5cbiAqIEBwYXJhbSB7U2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPn0gW29wdHMuc2VydmljZV0gLSBUaGUgY2xhc3MgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPFNvcnRzPn0gW29wdHMuc29ydHNUeXBlXSAtIFR5cGUgb2Ygc29ydHNcbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz59IFtvcHRzLmZpbHRlcnNUeXBlXSAtIFR5cGUgb2YgZmlsdGVycy5cbiAqIEBwYXJhbSB7KGJ1aWxkZXI6IFRhYmxldmlld0J1aWxkZXIpID0+IHZvaWR9IFtidWlsZEZuXSAtIFRoZSBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHRhYmxldmlldyB1c2luZyB0aGUgcHJlcGFyZWQgYnVpbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHRhYmxldmlldyBpbnN0YW5jZSB3aXRoIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIgYW5kIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXc8TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgfSxcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8TW9kZWwsIFNlcnZpY2UsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPiwgU29ydHMsIEZpbHRlcnM+XG4gICAgKSA9PiB2b2lkXG4pIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFRhYmxldmlld0lucHV0QnVpbGRlcjxcbiAgICAgICAgTW9kZWwsXG4gICAgICAgIFNlcnZpY2UsXG4gICAgICAgIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sXG4gICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICAgICAgU29ydHMsXG4gICAgICAgIEZpbHRlcnNcbiAgICA+KG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKSwgbmV3IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPihvcHRzPy5zZXJ2aWNlKSwgaW5qZWN0KEluamVjdG9yKSk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG5cbnR5cGUgVGFibGV2aWV3TXVsdGlNb2RlbE9wdHM8U2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+ID0ge1xuICAgIHNlcnZpY2U/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbn0gJiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld011bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IFRhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGU8TW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdNdWx0aU1vZGVsT3B0czxTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgYnVpbGRGbj86IChcbiAgICAgICAgYnVpbGRlcjogVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICAgICAgTW9kZWwsXG4gICAgICAgICAgICBTZXJ2aWNlLFxuICAgICAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgICAgIFNvcnRzLFxuICAgICAgICAgICAgRmlsdGVycyxcbiAgICAgICAgICAgIFRhYmxlTW9kZWwsXG4gICAgICAgICAgICBBZGRNb2RlbCxcbiAgICAgICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgICAgIEZpZWxkc01vZGVsXG4gICAgICAgID5cbiAgICApID0+IHZvaWRcbikge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc09wdFR5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+LFxuICAgICAgICBTb3J0cyxcbiAgICAgICAgRmlsdGVycyxcbiAgICAgICAgVGFibGVNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwsXG4gICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgRmllbGRzTW9kZWxcbiAgICA+KFxuICAgICAgICBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPihtb2RlbCwgb3B0cyksXG4gICAgICAgIG5ldyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzT3B0VHlwZTxTZXJ2aWNlPiwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4ob3B0cz8uc2VydmljZSksXG4gICAgICAgIGluamVjdChJbmplY3RvcilcbiAgICApO1xuICAgIGJ1aWxkRm4/LihidWlsZGVyKTtcbiAgICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufVxuIl19","import { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nexport function tableviewDataProviderFromDescriptor(descriptor, serviceType) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst(serviceType)\n : new TableviewDataProviderInst(undefined);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBd0NwRixNQUFNLFVBQVUsbUNBQW1DLENBU2pELFVBQTBHLEVBQUUsV0FBMEI7SUFDcEksT0FBTyxPQUFPLFdBQVcsS0FBSyxXQUFXO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFrRyxXQUF3QyxDQUFDO1FBQzFLLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFvRixTQUFTLENBQUMsQ0FBQztBQUN0SSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZnJvbSBkZXNjcmlwdG9yLiBETyBOT1QgdXNlIGlmIHRoZSBtb2RlbCBpcyBjbGFzcywgYmVjYXVzZSB0aGUgdHlwZSAoZnJvbSBtb2RlbCBkZXNjcmlwdG9yKSB3aWxsIG5vdCBiZSBzZXQgaW4gZGF0YSBwcm92aWRlci5cbiAqXG4gKiBAcGFyYW0ge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgZGVzY3JpcHRvci5cbiAqXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPjtcbi8qKlxuICogQ3JlYXRlcyBhIGRhdGEgcHJvdmlkZXIgZm9yIGZyb20gZGVzY3JpcHRvci4gRE8gTk9UIHVzZSBpZiB0aGUgbW9kZWwgaXMgY2xhc3MsIGJlY2F1c2UgdGhlIHR5cGUgKGZyb20gbW9kZWwgZGVzY3JpcHRvcikgd2lsbCBub3QgYmUgc2V0IGluIGRhdGEgcHJvdmlkZXIuXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+fSBkZXNjcmlwdG9yIC0gVGhlIHRhYmxlIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2VDbGFzcyAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUuXG4gKlxuICogQHJldHVybiB7VGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBhbnksIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbCwgYW55PixcbiAgICBzZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RhdGFQcm92aWRlckZyb21EZXNjcmlwdG9yPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSBhbnksXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgTW9kZWwsXG4gICAgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT4sIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4oc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgOiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBTb3J0cywgRmlsdGVycywgdW5kZWZpbmVkLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+KHVuZGVmaW5lZCk7XG59XG4iXX0=","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\nexport * from './action/descriptors/editor-action-descriptor.factory';\nexport * from './action/descriptors/editor-action-editor-descriptor.factory';\nexport * from './action/descriptors/table-action-descriptor.factory';\nexport * from './action/descriptors/table-action-editor-descriptor.factory';\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-confirmation.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n// editor descriptors\nexport * from './editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper';\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n// editor models\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n// tableview helpers\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-input-builder';\n// tableview models\nexport * from './tableview/models/tableview-descriptor-fields-manage-helper.type';\nexport * from './tableview/models/tableview-descriptor-helper.type';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFDckIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2REFBNkQsQ0FBQztBQUU1RSxpQkFBaUI7QUFDakIsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCx5QkFBeUI7QUFDekIsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsZUFBZTtBQUNmLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkRBQTJELENBQUM7QUFFMUUsa0JBQWtCO0FBQ2xCLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSx3QkFBd0I7QUFDeEIsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLHFCQUFxQjtBQUNyQixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGdCQUFnQjtBQUNoQixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCwyQkFBMkI7QUFDM0IsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLHdCQUF3QjtBQUN4QixjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFFckUsb0JBQW9CO0FBQ3BCLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxtQkFBbUI7QUFDbkIsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFjdGlvbiBkZXNjcmlwdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2Rlc2NyaXB0b3JzL3RhYmxlLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyBhY3Rpb24gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycyc7XG5cbi8vIGFjdGlvbiBtb2RlbCBleGVjdXRpb25cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWV4ZWN1dGlvbi1lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS1zdGF0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL3ZpZXctY29udGFpbmVyLm1vZGVsJztcblxuLy8gYWN0aW9uIG1vZGVsXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb21wb25lbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZWRpdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcblxuLy8gYWN0aW9uIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuXG4vLyBlZGl0b3IgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyBlZGl0b3IgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWdyb3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbi8vIGVkaXRvciBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9maWVsZC1hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9mb3JtbHktb3B0aW9ucy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuXG4vLyB0YWJsZXZpZXcgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy9maWxlcy1leHBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLy8gdGFibGV2aWV3IG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWhlbHBlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLXRhYmxldmlldy1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtdGFibGV2aWV3LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["map"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../tmp-esm2022/tableview/api/action/models/action.type.js","../tmp-esm2022/tableview/api/action/descriptors/action.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/data-providers/editor.data-provider.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/action-link.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/models/action-error.model.js","../tmp-esm2022/tableview/api/action/helpers/data-provider-executors.js","../tmp-esm2022/tableview/api/action/models/execution/action-instance-state.model.js","../tmp-esm2022/tableview/api/action/models/tableview-action-default-categories.model.js","../tmp-esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.js","../tmp-esm2022/tableview/api/action/services/data-provider-executor.service.js","../tmp-esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.js","../tmp-esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.js","../tmp-esm2022/tableview/api/editor/models/editor.model.js","../tmp-esm2022/tableview/api/editor/models/field.model.js","../tmp-esm2022/tableview/api/editor/descriptors/field-validation.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-base.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-action.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-group.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-many.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/models/form-editor.event.js","../tmp-esm2022/tableview/api/editor/models/formly-custom-field.model.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview.data-provider.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview.descriptor.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.js","../tmp-esm2022/tableview/api/tableview/helpers/files-export.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-default-actions.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-input-builder.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-create.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.js","../tmp-esm2022/tableview/api/index.js","../tmp-esm2022/tableview/api/mediusinc-mng-commons-tableview-api.js"],"sourcesContent":["export var ActionPositionEnum;\n(function (ActionPositionEnum) {\n ActionPositionEnum[ActionPositionEnum[\"ToolbarLeft\"] = 0] = \"ToolbarLeft\";\n ActionPositionEnum[ActionPositionEnum[\"ToolbarRight\"] = 1] = \"ToolbarRight\";\n ActionPositionEnum[ActionPositionEnum[\"TableHeader\"] = 2] = \"TableHeader\";\n ActionPositionEnum[ActionPositionEnum[\"RowInline\"] = 3] = \"RowInline\";\n ActionPositionEnum[ActionPositionEnum[\"RowClick\"] = 4] = \"RowClick\";\n ActionPositionEnum[ActionPositionEnum[\"FooterLeft\"] = 5] = \"FooterLeft\";\n ActionPositionEnum[ActionPositionEnum[\"FooterRight\"] = 6] = \"FooterRight\";\n})(ActionPositionEnum || (ActionPositionEnum = {}));\nexport var ActionActivationTriggerEnum;\n(function (ActionActivationTriggerEnum) {\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnClick\"] = 0] = \"OnClick\";\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnRoute\"] = 1] = \"OnRoute\"; // action is triggered for activation by route url\n})(ActionActivationTriggerEnum || (ActionActivationTriggerEnum = {}));\nexport var ActionTypeEnum;\n(function (ActionTypeEnum) {\n ActionTypeEnum[ActionTypeEnum[\"Direct\"] = 0] = \"Direct\";\n ActionTypeEnum[ActionTypeEnum[\"Editor\"] = 1] = \"Editor\"; // editor providing middle step for activation\n})(ActionTypeEnum || (ActionTypeEnum = {}));\nexport var ActionEditorSubmitTypeEnum;\n(function (ActionEditorSubmitTypeEnum) {\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Submit\"] = 0] = \"Submit\";\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Cancel\"] = 1] = \"Cancel\";\n})(ActionEditorSubmitTypeEnum || (ActionEditorSubmitTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2FjdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQVFYO0FBUkQsV0FBWSxrQkFBa0I7SUFDMUIseUVBQVcsQ0FBQTtJQUNYLDJFQUFZLENBQUE7SUFDWix5RUFBVyxDQUFBO0lBQ1gscUVBQVMsQ0FBQTtJQUNULG1FQUFRLENBQUE7SUFDUix1RUFBVSxDQUFBO0lBQ1YseUVBQVcsQ0FBQTtBQUNmLENBQUMsRUFSVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUTdCO0FBRUQsTUFBTSxDQUFOLElBQVksMkJBR1g7QUFIRCxXQUFZLDJCQUEyQjtJQUNuQyxtRkFBTyxDQUFBO0lBQ1AsbUZBQU8sQ0FBQSxDQUFDLGtEQUFrRDtBQUM5RCxDQUFDLEVBSFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUd0QztBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsdURBQU0sQ0FBQTtJQUNOLHVEQUFNLENBQUEsQ0FBQyw4Q0FBOEM7QUFDekQsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksMEJBR1g7QUFIRCxXQUFZLDBCQUEwQjtJQUNsQywrRUFBTSxDQUFBO0lBQ04sK0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBR3JDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQWN0aW9uUG9zaXRpb25FbnVtIHtcbiAgICBUb29sYmFyTGVmdCxcbiAgICBUb29sYmFyUmlnaHQsXG4gICAgVGFibGVIZWFkZXIsXG4gICAgUm93SW5saW5lLFxuICAgIFJvd0NsaWNrLFxuICAgIEZvb3RlckxlZnQsXG4gICAgRm9vdGVyUmlnaHRcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtIHtcbiAgICBPbkNsaWNrLCAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIG9uIGNsaWNrXG4gICAgT25Sb3V0ZSAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIGJ5IHJvdXRlIHVybFxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25UeXBlRW51bSB7XG4gICAgRGlyZWN0LCAvLyBhY3Rpb24gaXMgZGlyZWN0bHkgYWN0aXZhdGVkIGFuZCBleGVjdXRlZFxuICAgIEVkaXRvciAvLyBlZGl0b3IgcHJvdmlkaW5nIG1pZGRsZSBzdGVwIGZvciBhY3RpdmF0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtIHtcbiAgICBTdWJtaXQsXG4gICAgQ2FuY2VsXG59XG4iXX0=","import { of } from 'rxjs';\nimport { CommonsInternalError, DataProviderInst, LoggerService, StyleLevelEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';\nimport { ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nexport class ActionDescriptorInst {\n constructor(actionName, cfg) {\n this._type = ActionTypeEnum.Direct;\n this._activationTrigger = ActionActivationTriggerEnum.OnClick;\n this._position = ActionPositionEnum.ToolbarRight;\n this._level = StyleLevelEnum.Default;\n this._routeUrl = null;\n // multiple row selection\n this._hasItemsSelection = false;\n // subactions\n this._subactionsAsMenu = false;\n this._subactions = [];\n this._model = cfg?.model;\n this._actionName = actionName;\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(`Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`);\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n this.setI18nModelActionBaseKey();\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n let displayName = actionName;\n if (this._model)\n displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n get model() {\n return this._model;\n }\n get parentModel() {\n return this._parentModel;\n }\n get parentProperty() {\n return this._parentProperty;\n }\n get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n get type() {\n return this._type;\n }\n get activationTrigger() {\n return this._activationTrigger;\n }\n get position() {\n return this._position;\n }\n get routeUrl() {\n return this._routeUrl;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n return typeof this._runFunction === 'function';\n }\n get runFunction() {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n get actionName() {\n return this._actionName;\n }\n get actionNameLong() {\n return this._actionNameLong;\n }\n get runConfirmation() {\n return this._runConfirmation;\n }\n get runNotificationOnSuccess() {\n return this._runNotificationOnSuccess;\n }\n get runNotificationOnError() {\n return this._runNotificationOnError;\n }\n get afterRunAction() {\n return this._afterRunAction;\n }\n get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n get permissions() {\n return this._permissions;\n }\n get tableviewCategory() {\n return this._tableviewCategory;\n }\n get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n get button() {\n return this._button;\n }\n get component() {\n return this._component;\n }\n get componentFromDi() {\n return this._componentFromDi;\n }\n get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n get subactions() {\n return this._subactions;\n }\n setI18nModelActionBaseKey(base) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withIsVisibleFunction(fn) {\n this._isVisibleFunction = fn;\n return this;\n }\n withIsEnabledFunction(fn) {\n this._isEnabledFunction = fn;\n return this;\n }\n withRouteTrigger(routeUrl) {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n withPosition(position) {\n this._position = position;\n return this;\n }\n /**\n * Creates confirmation action with default style based on action descriptor\n */\n withRunConfirmation(opts = true) {\n this._runConfirmation = opts === true ? {} : opts === false ? undefined : opts;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for run success/error notifications.\n */\n withNotifications(opts) {\n this._runNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.runOnSuccess;\n this._runNotificationOnError = typeof opts === 'boolean' ? opts : opts?.runOnError;\n return this;\n }\n withAfterRunAction(action) {\n this._afterRunAction = action;\n return this;\n }\n withOnRunErrorAction(action) {\n this._onRunErrorAction = action;\n return this;\n }\n withPermissions(permissions) {\n if (this._tableviewCategory) {\n LoggerService.get().debug(`WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n withTableviewCategory(category) {\n this._tableviewCategory = category;\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withButton(label, icon = null, level) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withItemsSelection(hasSelection = true) {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n withComponent(component) {\n this._component = component;\n return this;\n }\n withComponentFromDi(injectionToken) {\n this._componentFromDi = injectionToken;\n return this;\n }\n withPositionTableviewCategories(positionTableviewCategories) {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n withI18nBase(base) {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n withSubactionsAsMenu(subactionsAsMenu = true) {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n withSubactions(...subactions) {\n this._subactions.push(...subactions);\n return this;\n }\n copyFieldsTo(descriptor) {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories ? [...this._positionTableviewCategories] : undefined;\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n if (this._runConfirmation) {\n descriptor._runConfirmation = { ...this._runConfirmation };\n if (this._runConfirmation.acceptButton) {\n descriptor._runConfirmation.acceptButton = { ...this._runConfirmation.acceptButton };\n }\n if (this._runConfirmation.rejectButton) {\n descriptor._runConfirmation.rejectButton = { ...this._runConfirmation.rejectButton };\n }\n }\n descriptor._runNotificationOnSuccess = typeof this._runNotificationOnSuccess === 'object' ? { ...this._runNotificationOnSuccess } : this._runNotificationOnSuccess;\n descriptor._runNotificationOnError = typeof this._runNotificationOnError === 'object' ? { ...this._runNotificationOnError } : this._runNotificationOnError;\n if (this._afterRunAction != null) {\n descriptor._afterRunAction = typeof this._afterRunAction === 'function' ? this._afterRunAction : this._afterRunAction.copy();\n }\n if (this._onRunErrorAction != null) {\n descriptor._onRunErrorAction = typeof this._onRunErrorAction === 'function' ? this._onRunErrorAction : this._onRunErrorAction.copy();\n }\n descriptor._permissions = this._permissions;\n if (this._button) {\n descriptor._button = {\n ...this._button\n };\n if (this._button.style) {\n descriptor._button.style = {\n ...this._button.style\n };\n }\n }\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._componentFromDi = this._componentFromDi;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions.map(a => a.copy());\n return descriptor;\n }\n copy() {\n const descriptor = new ActionDescriptorInst(this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLG1CQUFtQixFQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBT3JDLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQXFCdEcsTUFBTSxPQUFPLG9CQUFvQjtJQWlEN0IsWUFBbUIsVUFBa0IsRUFBRSxHQUF3RDtRQXRDckYsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFDO1FBSWhELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBb0IxQyx5QkFBeUI7UUFDZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFNckMsYUFBYTtRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUE4RCxFQUFFLENBQUM7UUFHbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLEdBQUcsRUFB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SSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQW9CLENBQWtFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0gsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMxQixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJQWN0aW9uRGVzY3JpcHRvcixcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBTdHlsZUxldmVsRW51bSxcbiAgICBmaW5kUmVmbGVjdFR5cGVOYW1lXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lBY3Rpb25CdXR0b25EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGUsIEFjdGlvblZhbGlkYXRpb25GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBBY3Rpb25UeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxJdGVtLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSA9IHtcbiAgICBwYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEl0ZW0sIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICB9O1xuXG50eXBlIEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiA9IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBSdW5SZXR1cm5JdGVtLCBhbnksIHVuZGVmaW5lZD47XG50eXBlIE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gPSBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgUnVuSW5wdXRJdGVtLCBhbnksIHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlID0gYW55LCBSdW5JbnB1dEl0ZW0gPSBJdGVtLCBSdW5SZXR1cm5JdGVtID0gSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IFJ1bklucHV0SXRlbT4gaW1wbGVtZW50cyBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogU3R5bGVMZXZlbEVudW0gPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0O1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfdGFibGV2aWV3Q2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uPzogQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9hZnRlclJ1bkFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KTtcbiAgICBwcm90ZWN0ZWQgX29uUnVuRXJyb3JBY3Rpb24/OiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFJ1bklucHV0SXRlbSwgYW55LCBhbnk+KSA9PiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+KTtcblxuICAgIC8vIHNlY3VyaXR5XG4gICAgcHJvdGVjdGVkIF9wZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIC8vYnV0dG9uXG4gICAgcHJvdGVjdGVkIF9idXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcjtcblxuICAgIC8vIG11bHRpcGxlIHJvdyBzZWxlY3Rpb25cbiAgICBwcm90ZWN0ZWQgX2hhc0l0ZW1zU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvLyBjdXN0b20gYWN0aW9uIGNvbXBvbmVudFxuICAgIHByb3RlY3RlZCBfY29tcG9uZW50PzogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+PjtcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudEZyb21EaT86IEluamVjdGlvblRva2VuPFR5cGU8YW55Pj47XG5cbiAgICAvLyBzdWJhY3Rpb25zXG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zQXNNZW51ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gY2ZnPy5tb2RlbDtcbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZSA9IGFjdGlvbk5hbWU7XG5cbiAgICAgICAgaWYgKChjZmc/LnBhcmVudE1vZGVsICYmICFjZmc/LnBhcmVudFByb3BlcnR5KSB8fCAoIWNmZz8ucGFyZW50UHJvcGVydHkgJiYgY2ZnPy5wYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgbW9kZWwgYW5kIHBhcmVudCBwcm9wZXJ0eSBvciBub25lOiAke3RoaXMuX2FjdGlvbk5hbWV9LCAke2NmZz8ucGFyZW50TW9kZWw/LmkxOG5CYXNlS2V5fSwgJHtjZmc/LnBhcmVudFByb3BlcnR5fS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BhcmVudE1vZGVsID0gY2ZnPy5wYXJlbnRNb2RlbDtcbiAgICAgICAgdGhpcy5fcGFyZW50UHJvcGVydHkgPSBjZmc/LnBhcmVudFByb3BlcnR5O1xuXG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleSgpO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gYWN0aW9uTmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsKSBkaXNwbGF5TmFtZSA9IHRoaXMuX21vZGVsLmkxOG5CYXNlS2V5ID8gYCR7dGhpcy5fbW9kZWwuaTE4bkJhc2VLZXl9LiR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50TW9kZWwpIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fcGFyZW50TW9kZWwuaTE4bkJhc2VLZXl9LiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lTG9uZyA9IGRpc3BsYXlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudE1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50TW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3J1bkZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuRnVuY3Rpb24oKTogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IGFuZCBjYW5ub3QgYmUgaW52b2tlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnRGcm9tRGkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRGcm9tRGk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zQXNNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1vZGVsIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50TW9kZWxcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudE1vZGVsLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvbihwb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgY29uZmlybWF0aW9uIGFjdGlvbiB3aXRoIGRlZmF1bHQgc3R5bGUgYmFzZWQgb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbihvcHRzOiBib29sZWFuIHwgQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT4gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbiA9IG9wdHMgPT09IHRydWUgPyB7fSA6IG9wdHMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogb3B0cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVmYXVsdCBub3RpZmljYXRpb25zIHNldHVwLiBOb3RpZmljYXRpb25zIGNhbiBlaXRoZXIgYmUgb3ZlcnJpZGRlbiB3aXRoIGN1c3RvbSB0ZXh0IG9yIHR1cm5lZCBvbi9vZmYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBQcm92aWRlIGNvbmZpZyBmb3IgdGV4dHMgb3Igb24vb2ZmIGZsYWcgZm9yIHJ1biBzdWNjZXNzL2Vycm9yIG5vdGlmaWNhdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhOb3RpZmljYXRpb25zKG9wdHM/OiB7cnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47IHJ1bk9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbn0gfCBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8ucnVuT25TdWNjZXNzO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5ydW5PbkVycm9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyUnVuQWN0aW9uKGFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPblJ1bkVycm9yQWN0aW9uKGFjdGlvbj86IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnksIGFueT4pID0+IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkuZGVidWcoXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25PcHRzKGJ1dHRvbj86IElBY3Rpb25CdXR0b25EZXNjcmlwdG9yKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2J1dHRvbiA9IGJ1dHRvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b24obGFiZWw/OiBzdHJpbmcgfCBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgbGV2ZWw/OiBTdHlsZUxldmVsRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9idXR0b24sXG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2J1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXRlbXNTZWxlY3Rpb24oaGFzU2VsZWN0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbiA9IGhhc1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA/PyAoY3R4ID0+IG9mKChjdHgucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50RnJvbURpKGluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudEZyb21EaSA9IGluamVjdGlvblRva2VuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJMThuQmFzZShiYXNlOiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGJhc2UpO1xuICAgICAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgZGVmaW5lIGkxOG5CYXNlS2V5IGZvciAke2Jhc2V9IG9uIGFjdGlvbiAke3RoaXMuYWN0aW9uTmFtZUxvbmd9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlID0gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnNBc01lbnUoc3ViYWN0aW9uc0FzTWVudSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9uc0FzTWVudSA9IHN1YmFjdGlvbnNBc01lbnU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9ucy5wdXNoKC4uLnN1YmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUZpZWxkc1RvKFxuICAgICAgICBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+XG4gICAgKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIGRlc2NyaXB0b3IuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXkgPSB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5O1xuICAgICAgICBkZXNjcmlwdG9yLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZGVzY3JpcHRvci5fYWN0aXZhdGlvblRyaWdnZXIgPSB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fbGV2ZWwgPSB0aGlzLl9sZXZlbDtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID0gdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID8gWy4uLnRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllc10gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGV2aWV3Q2F0ZWdvcnkgPSB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICAgICAgZGVzY3JpcHRvci5fcm91dGVVcmwgPSB0aGlzLl9yb3V0ZVVybDtcblxuICAgICAgICBkZXNjcmlwdG9yLl9ydW5GdW5jdGlvbiA9IHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc1Zpc2libGVGdW5jdGlvbiA9IHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydW5Db25maXJtYXRpb24pIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX3J1bkNvbmZpcm1hdGlvbiA9IHsuLi50aGlzLl9ydW5Db25maXJtYXRpb259O1xuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24uYWNjZXB0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24ucmVqZWN0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25FcnJvciA9IHR5cGVvZiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuX2FmdGVyUnVuQWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2FmdGVyUnVuQWN0aW9uID0gdHlwZW9mIHRoaXMuX2FmdGVyUnVuQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fYWZ0ZXJSdW5BY3Rpb24gOiB0aGlzLl9hZnRlclJ1bkFjdGlvbi5jb3B5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci5fb25SdW5FcnJvckFjdGlvbiA9IHR5cGVvZiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fb25SdW5FcnJvckFjdGlvbiA6IHRoaXMuX29uUnVuRXJyb3JBY3Rpb24uY29weSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcGVybWlzc2lvbnMgPSB0aGlzLl9wZXJtaXNzaW9ucztcblxuICAgICAgICBpZiAodGhpcy5fYnV0dG9uKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9idXR0b24gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbi5zdHlsZSkge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuX2J1dHRvbi5zdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLnN0eWxlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc0l0ZW1zU2VsZWN0aW9uID0gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbXBvbmVudCA9IHRoaXMuX2NvbXBvbmVudDtcbiAgICAgICAgZGVzY3JpcHRvci5fY29tcG9uZW50RnJvbURpID0gdGhpcy5fY29tcG9uZW50RnJvbURpO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zQXNNZW51ID0gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9ucyA9IHRoaXMuX3N1YmFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4odGhpcy5fYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport const actionGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates and returns an instance of ActionDescriptorInst, allowing customization of the action's behavior through configuration options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionDescriptorCreateFromModelOptsType<Model, Service, RunInput, RunResult, ValidationInput>} [opts] - Optional configuration object to define the action's behavior, including model, service provider and other.\n * @return {ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput>} An instance of ActionDescriptorInst configured with the provided parameters.\n */\nexport function action(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n ...opts\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBK0Usb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCdkksTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBaUIscUJBQTBELEVBQUUsRUFBRTtJQUNsSCxNQUFNLEdBQUcsR0FBMkQsRUFBRSxDQUFDO0lBQ3ZFLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4QixJQUFLLHFCQUF1QyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFELHFGQUFxRjtZQUNyRixHQUFHLENBQUMsWUFBWSxHQUFHLHFCQUFzRCxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxxQkFBa0QsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDbEIsVUFBa0IsRUFDbEIsSUFBMkY7SUFFM0YsT0FBTyxJQUFJLG9CQUFvQixDQUF1RCxVQUFVLEVBQUU7UUFDOUYsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLEdBQUcsSUFBSTtLQUNWLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhUHJvdmlkZXIsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21Nb2RlbE9wdHNUeXBlPFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgY29uc3QgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmogPSA8TW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5kYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIEFjdGlvbkRlc2NyaXB0b3JJbnN0LCBhbGxvd2luZyBjdXN0b21pemF0aW9uIG9mIHRoZSBhY3Rpb24ncyBiZWhhdmlvciB0aHJvdWdoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbU1vZGVsT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0LCBSdW5SZXN1bHQsIFZhbGlkYXRpb25JbnB1dD59IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGRlZmluZSB0aGUgYWN0aW9uJ3MgYmVoYXZpb3IsIGluY2x1ZGluZyBtb2RlbCwgc2VydmljZSBwcm92aWRlciBhbmQgb3RoZXIuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBSdW5JbnB1dCA9IE1vZGVsLCBSdW5SZXN1bHQgPSBNb2RlbCwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRzPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBSdW5JbnB1dCwgUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PihhY3Rpb25OYW1lLCB7XG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25HZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgIC4uLm9wdHNcbiAgICB9KTtcbn1cbiJdfQ==","import { Subject } from 'rxjs';\nimport { DataProviderInst } from '@mediusinc/mng-commons/core';\nexport class EditorDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this._editorResetSubject = new Subject();\n }\n get fetch() {\n return this._fetch;\n }\n get create() {\n return this._create;\n }\n get update() {\n return this._update;\n }\n get delete() {\n return this._delete;\n }\n get mapFetchItemToCreateItem() {\n return this._mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this._mapFetchItemToUpdateItem;\n }\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn) {\n this._fetch = fn;\n return this;\n }\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<CreateModel, Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn) {\n this._create = fn;\n return this;\n }\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn) {\n this._update = fn;\n return this;\n }\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn) {\n this._delete = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to create model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, CreateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam CreateModel The type of data to map to.\n */\n withMapFetchItemToCreateItem(fn) {\n this._mapFetchItemToCreateItem = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to update model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, UpdateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam UpdateModel The type of data to map to.\n */\n withMapFetchItemToUpdateItem(fn) {\n this._mapFetchItemToUpdateItem = fn;\n return this;\n }\n resetEditor(event) {\n this._editorResetSubject.next(event ?? {});\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQTBFLE1BQU0sNkJBQTZCLENBQUM7QUFxRnRJLE1BQU0sT0FBTyxzQkFDVCxTQUFRLGdCQUE4QztJQVl0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFWSix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQVdoRixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDeEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsQ0FBQyxFQUFpRDtRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsVUFBVSxDQUFDLEVBQWdFO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxVQUFVLENBQW1CLEVBQXlEO1FBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBK0I7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtEYXRhUHJvdmlkZXJJbnN0LCBJRGF0YVByb3ZpZGVyLCBJZFR5cGUsIEl0ZW1Pck9ic2VydmFibGUsIFNlcnZpY2VDbGFzc09wdFR5cGUsIFVuZGVmaW5lZH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtFZGl0b3JSZXNldEV2ZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuXG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8TW9kZWw+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwgPSBhbnksIE1vZGVsID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBJdGVtID0gVW5kZWZpbmVkPENyZWF0ZU1vZGVsPiwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxVbmRlZmluZWQ8TW9kZWw+Pj4gPSAoXG4gICAgaXRlbTogSXRlbSxcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxcbiAgICBVcGRhdGVNb2RlbCA9IGFueSxcbiAgICBNb2RlbCA9IGFueSxcbiAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgIElkID0gSWRUeXBlLFxuICAgIEl0ZW0gPSBVbmRlZmluZWQ8VXBkYXRlTW9kZWw+LFxuICAgIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8VW5kZWZpbmVkPE1vZGVsPj5cbj4gPSAoaWQ6IElkLCBpdGVtOiBJdGVtLCBzZXJ2aWNlOiBTZXJ2aWNlKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwgPSBhbnksIFNlcnZpY2UgPSB1bmRlZmluZWQsIEl0ZW0gPSB1bmRlZmluZWQsIElkID0gSWRUeXBlLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPFVuZGVmaW5lZDxNb2RlbD4+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBpdGVtOiBJdGVtXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8RnJvbU1vZGVsLCBUb01vZGVsPiA9IChpdGVtOiBGcm9tTW9kZWwpID0+IFRvTW9kZWw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICBjcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlclVwZGF0ZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICB1cGRhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhVcGRhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGRlbGV0ZT86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgYW55PjtcblxuICAgIHdpdGhEZWxldGU8SXRlbSA9IHVuZGVmaW5lZD4oZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwsIFNlcnZpY2UsIEl0ZW0+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBVcGRhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IHR5cGUgSUVkaXRvckRhdGFQcm92aWRlckZuc1R5cGU8TW9kZWwsIFNlcnZpY2UsIENyZWF0ZU1vZGVsID0gTW9kZWwsIFVwZGF0ZU1vZGVsID0gTW9kZWwsIERlbGV0ZU1vZGVsID0gTW9kZWw+ID0gSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiAmXG4gICAgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlPFVwZGF0ZU1vZGVsLCBNb2RlbCwgU2VydmljZT4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGU8RGVsZXRlTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXJTdXBwb3J0PE1vZGVsPiB7XG4gICAgZ2V0IGVkaXRvclJlc2V0JCgpOiBPYnNlcnZhYmxlPEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+PjtcblxuICAgIHJlc2V0RWRpdG9yKGV2ZW50PzogRWRpdG9yUmVzZXRFdmVudDxNb2RlbD4pOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPiA9IElEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBTZXJ2aWNlQ2xhc3Ncbj4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyU3VwcG9ydDxNb2RlbD47XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lZGl0b3JSZXNldFN1YmplY3QgPSBuZXcgU3ViamVjdDxFZGl0b3JSZXNldEV2ZW50PE1vZGVsPj4oKTtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9jcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+O1xuICAgIHByb3RlY3RlZCBfZGVsZXRlPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBhbnk+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdG9yUmVzZXQkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yUmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZldGNoIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEVkaXRvckRhdGFQcm92aWRlciB3aXRoIHRoZSBmZXRjaCBmdW5jdGlvbiBzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaCA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjcmVhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+fSBmbiAtIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBjcmVhdGluZyBuZXcgaXRlbXMuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aENyZWF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB1cGRhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIHVwZGF0ZSBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkZWxldGUgZnVuY3Rpb24gZm9yIHRoZSBlZGl0b3IgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPn0gZm4gLSBUaGUgZGVsZXRlIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aERlbGV0ZTxJdGVtID0gdW5kZWZpbmVkPihmbj86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZ1bmN0aW9uIHRvIG1hcCBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gY3JlYXRlIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD59IGZuIC0gVGhlIG1hcCBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBjbGFzcy5cbiAgICAgKlxuICAgICAqIEB0eXBlcGFyYW0gTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSBmcm9tIGZldGNoIGZ1bmN0aW9uIHRvIG1hcCBmcm9tLlxuICAgICAqIEB0eXBlcGFyYW0gQ3JlYXRlTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSB0byBtYXAgdG8uXG4gICAgICovXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZnVuY3Rpb24gdG8gbWFwIGRhdGEgZnJvbSBmZXRjaCBmdW5jdGlvbiB0byB1cGRhdGUgbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPn0gZm4gLSBUaGUgbWFwIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gbWFwIGZyb20uXG4gICAgICogQHR5cGVwYXJhbSBVcGRhdGVNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRvIG1hcCB0by5cbiAgICAgKi9cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRvclJlc2V0U3ViamVjdC5uZXh0KGV2ZW50ID8/IHt9KTtcbiAgICB9XG59XG4iXX0=","import { CommonsInternalError, StyleLevelEnum, StyleSizeEnum } from '@mediusinc/mng-commons/core';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nimport { ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nimport { ActionDescriptorInst } from './action.descriptor';\nexport class ActionEditorDescriptorInst extends ActionDescriptorInst {\n constructor(editorDescriptor, actionName, cfg) {\n super(actionName, {\n ...cfg,\n model: cfg?.model ?? editorDescriptor.model\n });\n this._dataProvider = undefined;\n this._editorActions = [];\n this._editorTitle = undefined;\n this._editorTitleParams = undefined;\n this._dialogSize = StyleSizeEnum.Normal;\n this._resubmitRefetch = true;\n this._unsavedChangesConfirmation = false;\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n get editorTitle() {\n return this._editorTitle;\n }\n get editorTitleParams() {\n return this._editorTitleParams;\n }\n get editorDescriptor() {\n return this._editorDescriptor;\n }\n get dialogSize() {\n return this._dialogSize;\n }\n get dialogClassName() {\n return this._dialogClassName;\n }\n get fetchNotificationOnSuccess() {\n return this._fetchNotificationOnSuccess;\n }\n get fetchNotificationOnError() {\n return this._fetchNotificationOnError;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get runFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get hasFetchFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get fetchFunction() {\n return this._fetchFunction;\n }\n get hasSubmitFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get submitFunction() {\n return this._submitFunction;\n }\n get editorActions() {\n return this._editorActions;\n }\n get editorComponent() {\n return this._editorComponent;\n }\n get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n withEditorTitle(title, params) {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n withDialogSize(size = StyleSizeEnum.Normal) {\n this._dialogSize = size;\n return this;\n }\n withDialogClassName(className) {\n this._dialogClassName = className;\n return this;\n }\n withRunFunction(fn) {\n return this.withSubmitFunction(fn);\n }\n withFetchFunction(fn) {\n this._fetchFunction = fn;\n return this;\n }\n withSubmitFunction(fn) {\n this._submitFunction = fn;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.\n */\n withNotifications(opts) {\n super.withNotifications(typeof opts === 'boolean'\n ? opts\n : {\n runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,\n runOnError: opts?.submitOnError ?? opts?.runOnError\n });\n this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;\n this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;\n return this;\n }\n withEditorAction(action) {\n this._editorActions.push(action);\n return this;\n }\n withEditorActions(actions) {\n this._editorActions = actions;\n return this;\n }\n withEditorComponent(editorComponent) {\n this._editorComponent = editorComponent;\n return this;\n }\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n withResubmit(enabled, refetch = true) {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n withUnsavedChangesConfirmation(unsavedChangesConfirmation = true) {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n copyFieldsTo(descriptor) {\n super.copyFieldsTo(descriptor);\n descriptor._editorActions = this._editorActions.map(a => a.copy());\n descriptor._editorTitle = this._editorTitle;\n descriptor._editorTitleParams = this._editorTitleParams != null ? { ...this._editorTitleParams } : undefined;\n descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? { ...this._fetchNotificationOnSuccess } : this._fetchNotificationOnSuccess;\n descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? { ...this._fetchNotificationOnError } : this._fetchNotificationOnError;\n descriptor._dialogSize = this._dialogSize;\n descriptor._dialogClassName = this._dialogClassName;\n descriptor._fetchFunction = this._fetchFunction;\n descriptor._submitFunction = this._submitFunction;\n descriptor._editorComponent = this._editorComponent;\n descriptor._resubmitEnabled = this._resubmitEnabled;\n descriptor._resubmitRefetch = this._resubmitRefetch;\n descriptor._unsavedChangesConfirmation = this._unsavedChangesConfirmation;\n return descriptor;\n }\n copy() {\n const editor = this._editorDescriptor.copy();\n const descriptor = new ActionEditorDescriptorInst(editor, this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\nexport class ActionEditorSubmitDescriptorInst extends ActionDescriptorInst {\n constructor(editorActionName, editorActionModel, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorActionName}.submit` : `${editorActionName}.cancel`, { model: editorActionModel });\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n }\n get submitType() {\n return this._submitType;\n }\n copy() {\n const descriptor = new ActionEditorSubmitDescriptorInst(this._actionName.split('.').slice(0, -1).join('.'), this._model?.copy(), this._submitType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n level: editorAction.button?.style?.level\n }\n });\n}\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n textButton: true,\n level: StyleLevelEnum.Secondary\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdsSCxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFHN0csT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFBdUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWEvRixNQUFNLE9BQU8sMEJBUVgsU0FBUSxvQkFBc0Y7SUF1QjVGLFlBQW1CLGdCQUF1RCxFQUFFLFVBQWtCLEVBQUUsR0FBOEQ7UUFDMUosS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNkLEdBQUcsR0FBRztZQUNOLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFLLGdCQUFnQixDQUFDLEtBQTBDO1NBQ3BGLENBQUMsQ0FBQztRQXpCcUIsa0JBQWEsR0FBb0MsU0FBUyxDQUFDO1FBRTdFLG1CQUFjLEdBQWtFLEVBQUUsQ0FBQztRQUNuRixpQkFBWSxHQUFtQixTQUFTLENBQUM7UUFDekMsdUJBQWtCLEdBQVMsU0FBUyxDQUFDO1FBS3JDLGdCQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQVNuQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBUTFDLElBQUksR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsQ0FBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FB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QUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNwSSxLQUFLLEVBQUU7WUFDSCxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztTQUMzQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixZQUFxRixFQUNyRixVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTTtJQUU5QyxPQUFPLElBQUksZ0NBQWdDLENBQXFCLFlBQVksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDcEksS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFDaEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO1NBQ2xDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIFNlcnZpY2VDbGFzc1R5cGUsIFN0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JSdW5GblR5cGUsIEFjdGlvbk5vdGlmaWNhdGlvblR5cGUsIEFjdGlvblJ1bkZuVHlwZX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4vYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiAmIHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I/OiBib29sZWFuO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8XG4gICAgSXRlbSxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIEVkaXRvckl0ZW0gPSBJdGVtLFxuICAgIEZldGNoSW5wdXRJdGVtID0gSXRlbSxcbiAgICBTdWJtaXRSZXR1cm5JdGVtID0gSXRlbSxcbiAgICBWYWxpZGF0aW9uSW5wdXRJdGVtID0gSXRlbSxcbiAgICBQYXJlbnRFZGl0b3JJdGVtID0gdW5kZWZpbmVkXG4+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+ID0gdW5kZWZpbmVkO1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdID0gW107XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZVBhcmFtcz86IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBfc3VibWl0RnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRvckNvbXBvbmVudD86IFR5cGU8YW55PjtcblxuICAgIHByb3RlY3RlZCBfcmVzdWJtaXRFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0UmVmZXRjaCA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIGFueT4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uY2ZnLFxuICAgICAgICAgICAgbW9kZWw6IGNmZz8ubW9kZWwgPz8gKGVkaXRvckRlc2NyaXB0b3IubW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8SXRlbT4pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb25FZGl0b3JTdWJtaXQodGhpcyksIGFjdGlvbkVkaXRvckNhbmNlbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGVQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaGFzUnVuRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHJ1bkZ1bmN0aW9uKCk6IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0ZldGNoRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzU3VibWl0RnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1Ym1pdEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0RnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yQWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckNvbXBvbmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0UmVmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JUaXRsZSh0aXRsZTogc3RyaW5nIHwgbnVsbCwgcGFyYW1zPzogYW55KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ1NpemUoc2l6ZSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ0NsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dDbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oZm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hGdW5jdGlvbihmbjogQWN0aW9uRWRpdG9yUnVuRm5UeXBlPEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0sIFNlcnZpY2UsIEZldGNoSW5wdXRJdGVtLCBFZGl0b3JJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3VibWl0RnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJtaXRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgc2V0dXAuIE5vdGlmaWNhdGlvbnMgY2FuIGVpdGhlciBiZSBvdmVycmlkZGVuIHdpdGggY3VzdG9tIHRleHQgb3IgdHVybmVkIG9uL29mZi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIFByb3ZpZGUgY29uZmlnIGZvciB0ZXh0cyBvciBvbi9vZmYgZmxhZyBmb3Igc3VibWl0IChpcyBzYW1lIGFzIHJ1bikgb3IgZmV0Y2ggc3VjY2Vzcy9lcnJvciBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgb3B0cz86XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIHN1Ym1pdE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgc3VibWl0T25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBydW5PbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBmZXRjaE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hPbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICk6IHRoaXMge1xuICAgICAgICBzdXBlci53aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgICAgIHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgICAgICA/IG9wdHNcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBydW5PblN1Y2Nlc3M6IG9wdHM/LnN1Ym1pdE9uU3VjY2VzcyA/PyBvcHRzPy5ydW5PblN1Y2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgcnVuT25FcnJvcjogb3B0cz8uc3VibWl0T25FcnJvciA/PyBvcHRzPy5ydW5PbkVycm9yXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uU3VjY2VzcztcbiAgICAgICAgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uRXJyb3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckNvbXBvbmVudChlZGl0b3JDb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JDb21wb25lbnQgPSBlZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgcmVzdWJtaXQgcmVzdWJtaXQgLSB0aGlzIG1lYW5zIHRoZSBmb3JtIHdpbGwgbm90IGV4aXQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uLCBidXQgd2lsbCBpbnN0ZWFkIHJlbWFpbiBvcGVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZW5hYmxlZD10cnVlXSAtIFNwZWNpZmllcyB3aGV0aGVyIHJlc3VibWl0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIERlZmF1bHRzIHRvIHRydWUgaWYgbm90IHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JlZmV0Y2g9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBzaG91bGQgYmUgcmVmZXRjaGVkIGFmdGVyIHJlc3VibWl0LiBJZiBub3QsIHRoZSBkYXRhIGluIHRoZSBmb3JtIHN0YXlzIGFzIGlzLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugd2l0aCB0aGUgcmVzdWJtaXQgY29uZmlndXJhdGlvbiB1cGRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUmVzdWJtaXQoZW5hYmxlZD86IGJvb2xlYW4sIHJlZmV0Y2ggPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0RW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0UmVmZXRjaCA9IHJlZmV0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24odW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvcHlGaWVsZHNUbyhcbiAgICAgICAgZGVzY3JpcHRvcjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+XG4gICAgKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+IHtcbiAgICAgICAgc3VwZXIuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JBY3Rpb25zID0gdGhpcy5fZWRpdG9yQWN0aW9ucy5tYXAoYSA9PiBhLmNvcHkoKSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlID0gdGhpcy5fZWRpdG9yVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlUGFyYW1zID0gdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXMgIT0gbnVsbCA/IHsuLi50aGlzLl9lZGl0b3JUaXRsZVBhcmFtc30gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPT09ICdvYmplY3QnID8gey4uLnRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3IgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3J9IDogdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2RpYWxvZ1NpemUgPSB0aGlzLl9kaWFsb2dTaXplO1xuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dDbGFzc05hbWUgPSB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoRnVuY3Rpb24gPSB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJtaXRGdW5jdGlvbiA9IHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JDb21wb25lbnQgPSB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0RW5hYmxlZCA9IHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICAgICAgZGVzY3JpcHRvci5fcmVzdWJtaXRSZWZldGNoID0gdGhpcy5fcmVzdWJtaXRSZWZldGNoO1xuICAgICAgICBkZXNjcmlwdG9yLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuX2VkaXRvckRlc2NyaXB0b3IuY29weSgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPihcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgbW9kZWw6IHRoaXMuX21vZGVsPy5jb3B5KCksXG4gICAgICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnksIGFueT4sXG4gICAgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdFxuKTogQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+KGVkaXRvckFjdGlvbi5hY3Rpb25OYW1lLCBlZGl0b3JBY3Rpb24ubW9kZWwsIHN1Ym1pdFR5cGUpLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGxldmVsOiBlZGl0b3JBY3Rpb24uYnV0dG9uPy5zdHlsZT8ubGV2ZWxcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIGNyZWF0ZXMgc2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIHRleHQgYnV0dG9uIHN0eWxlXG4gKiBAcGFyYW0gZWRpdG9yQWN0aW9uXG4gKiBAcGFyYW0gc3VibWl0VHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yQ2FuY2VsPE1vZGVsLCBFZGl0b3JNb2RlbD4oXG4gICAgZWRpdG9yQWN0aW9uOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBFZGl0b3JNb2RlbCwgYW55LCBhbnksIGFueSwgYW55PixcbiAgICBzdWJtaXRUeXBlID0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uQ2FuY2VsXG4pOiBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4oZWRpdG9yQWN0aW9uLmFjdGlvbk5hbWUsIGVkaXRvckFjdGlvbi5tb2RlbCwgc3VibWl0VHlwZSkud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdGV4dEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl19","import { ActionEditorDescriptorInst } from './action-editor.descriptor';\nexport const actionEditorGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates an ActionEditorDescriptorInst instance with the provided editor descriptor and options.\n *\n * @param {string} actionName - The name of the action to associate with the editor.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance to be used.\n * @param {ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput>} [opts] - Optional configuration options for the ActionEditor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput>} An instance of ActionEditorDescriptor with the configured parameters.\n */\nexport function actionEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n ...opts,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n model: opts?.model\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUErQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBYXBILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQWlCLHFCQUFnRSxFQUFFLEVBQUU7SUFDOUgsTUFBTSxHQUFHLEdBQWlFLEVBQUUsQ0FBQztJQUM3RSxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBNkMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoRSxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLFlBQVksR0FBRyxxQkFBNEQsQ0FBQztRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNKLEdBQUcsQ0FBQyxXQUFXLEdBQUcscUJBQWtELENBQUM7UUFDekUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQVN4QixVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxJQUFnRztJQUVoRyxPQUFPLElBQUksMEJBQTBCLENBQTJGLE1BQU0sRUFBRSxVQUFVLEVBQUU7UUFDaEosR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZX0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICYge1xuICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGZldGNoSW5wdXRUeXBlPzogVHlwZURlc2NyaXB0b3I8RmV0Y2hJbnB1dD47XG4gICAgc3VibWl0UmV0dXJuVHlwZT86IFR5cGVEZXNjcmlwdG9yPFN1Ym1pdFJldHVybj47XG4gICAgdmFsaWRhdGlvblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxWYWxpZGF0aW9uSW5wdXQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqID0gPE1vZGVsLCBTZXJ2aWNlPihzZXJ2aWNlT3JEYXRhUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSA9PiB7XG4gICAgY29uc3QgY2ZnOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcuZGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2ZnLnNlcnZpY2VUeXBlID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNmZztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBlZGl0b3IgZGVzY3JpcHRvciBhbmQgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIGVkaXRvci5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIGFueT59IGVkaXRvciAtIFRoZSBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZSB0byBiZSB1c2VkLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0Pn0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQWN0aW9uRWRpdG9yLlxuICogQHJldHVybiB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBGZXRjaElucHV0LCBTdWJtaXRSZXR1cm4sIFZhbGlkYXRpb25JbnB1dD59IEFuIGluc3RhbmNlIG9mIEFjdGlvbkVkaXRvckRlc2NyaXB0b3Igd2l0aCB0aGUgY29uZmlndXJlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yPFxuICAgIEVkaXRvck1vZGVsLFxuICAgIE1vZGVsID0gRWRpdG9yTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBGZXRjaElucHV0ID0gTW9kZWwsXG4gICAgU3VibWl0UmV0dXJuID0gTW9kZWwsXG4gICAgVmFsaWRhdGlvbklucHV0ID0gTW9kZWwsXG4gICAgUGFyZW50RWRpdG9ySXRlbSA9IHVuZGVmaW5lZFxuPihcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgZWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbT4sXG4gICAgb3B0cz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport class ActionLinkDescriptorInst extends ActionDescriptorInst {\n constructor(actionName = 'link', cfg) {\n super(actionName, cfg);\n this._url = '';\n this._pathSegments = [];\n this._replaceUrl = false;\n this._target = '_self';\n this._isStyleLink = false;\n }\n get url() {\n return this._url;\n }\n get pathSegments() {\n return this._pathSegments;\n }\n get queryParams() {\n return this._queryParams;\n }\n get queryParamsHandling() {\n return this._queryParamsHandling;\n }\n get replaceUrl() {\n return this._replaceUrl;\n }\n get target() {\n return this._target;\n }\n get isStyleLink() {\n return this._isStyleLink;\n }\n withHref(url) {\n this._url = url;\n return this;\n }\n withRouterLink(...pathSegments) {\n this._pathSegments = pathSegments;\n return this;\n }\n withQueryParams(queryParams, queryParamsHandling) {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n withReplaceUrl(replaceUrl = false) {\n this._replaceUrl = replaceUrl;\n return this;\n }\n withTarget(target = '_self') {\n this._target = target;\n return this;\n }\n withStyleLink(isStyleLink) {\n this._isStyleLink = isStyleLink;\n return this;\n }\n copy() {\n const descriptor = new ActionLinkDescriptorInst(this._actionName, {\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor); // copy base action\n descriptor._url = this._url;\n descriptor._pathSegments = [...this._pathSegments];\n descriptor._queryParams = { ...this._queryParams };\n descriptor._queryParamsHandling = this._queryParamsHandling;\n descriptor._replaceUrl = this._replaceUrl;\n descriptor._target = this._target;\n descriptor._isStyleLink = this._isStyleLink;\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLE9BQU8sd0JBQTJELFNBQVEsb0JBQWdGO0lBUzVKLFlBQVksVUFBVSxHQUFHLE1BQU0sRUFBRSxHQUErQztRQUM1RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVG5CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTdCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsR0FBRyxZQUFzQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CLEVBQUUsbUJBQXlDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBNkIsT0FBTztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW9CO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQTRCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUNsRCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlLCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkxpbmtEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzPE1vZGVsPiA9IE9taXQ8QWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIHVuZGVmaW5lZD4sICdzZXJ2aWNlVHlwZScgfCAnZGF0YVByb3ZpZGVyJz47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW0+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZSA9ICdsaW5rJywgY2ZnPzogQWN0aW9uTGlua0Rlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHM8SXRlbT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxJdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPih0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7IC8vIGNvcHkgYmFzZSBhY3Rpb25cbiAgICAgICAgZGVzY3JpcHRvci5fdXJsID0gdGhpcy5fdXJsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wYXRoU2VnbWVudHMgPSBbLi4udGhpcy5fcGF0aFNlZ21lbnRzXTtcbiAgICAgICAgZGVzY3JpcHRvci5fcXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fcXVlcnlQYXJhbXN9O1xuICAgICAgICBkZXNjcmlwdG9yLl9xdWVyeVBhcmFtc0hhbmRsaW5nID0gdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fcmVwbGFjZVVybCA9IHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhcmdldCA9IHRoaXMuX3RhcmdldDtcbiAgICAgICAgZGVzY3JpcHRvci5faXNTdHlsZUxpbmsgPSB0aGlzLl9pc1N0eWxlTGluaztcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ActionLinkDescriptorInst } from './action-link.descriptor';\n/**\n * Creates an instance of ActionLinkDescriptorInst with the provided action name and options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionLinkCreateOptsType<Model, ValidationInput>} [opts] - Optional parameters for configuring the action link, including the model and validation type.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} An instance of ActionLinkDescriptorInst initialized with the action name and options.\n */\nexport function actionLink(actionName, opts) {\n return new ActionLinkDescriptorInst(actionName, {\n ...opts,\n model: opts?.model\n });\n}\n/**\n * Generates an ActionLinkDescriptorInst from the provided ActionDescriptorInst.\n *\n * @param {ActionDescriptorInst<Model, any, any, any, ValidationInput>} action - The action descriptor instance that serves as the basis for the action link.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} A newly created ActionLinkDescriptorInst configured with the provided action parameters.\n */\nexport function actionLinkFromAction(action) {\n const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });\n action.copyFieldsTo(descriptor);\n // disable confirmation and notifications\n descriptor.withRunConfirmation(false);\n descriptor.withNotifications(false);\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n descriptor.withSubactionsAsMenu(false);\n return descriptor;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIC8vIGRpc2FibGUgY29uZmlybWF0aW9uIGFuZCBub3RpZmljYXRpb25zXG4gICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhOb3RpZmljYXRpb25zKGZhbHNlKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aEFmdGVyUnVuQWN0aW9uKCk7XG4gICAgZGVzY3JpcHRvci53aXRoT25SdW5FcnJvckFjdGlvbigpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified editor with editor-specific execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {EditorDescriptorInst<EditorModel>} editor - The descriptor of the editor on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The position of action on editor.\n * @return {ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel>} - An instance representing the configured action descriptor for the specified editor and model.\n */\nexport function actionOnEditor(actionName, editor, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFxQix1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUMxQixVQUFrQixFQUNsQixNQUE4QyxFQUM5QyxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFrRCxVQUFVLEVBQUU7UUFDekYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25Qcm92aWRlclR5cGUsIGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2FjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbi8qKlxuICogRGVmaW5lcyBhbiBhY3Rpb24gdG8gYmUgcG9zaXRpb25lZCBvbiBhIHNwZWNpZmllZCBlZGl0b3Igd2l0aCBlZGl0b3Itc3BlY2lmaWMgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBpZGVudGlmeWluZyB0aGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWw+fSBlZGl0b3IgLSBUaGUgZGVzY3JpcHRvciBvZiB0aGUgZWRpdG9yIG9uIHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSBwbGFjZWQgYW5kIGV4ZWN1dGVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodH0gW29wdHMucG9zaXRpb25dIC0gVGhlIHBvc2l0aW9uIG9mIGFjdGlvbiBvbiBlZGl0b3IuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIE1vZGVsLCBFZGl0b3JNb2RlbD59IC0gQW4gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBjb25maWd1cmVkIGFjdGlvbiBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIGVkaXRvciBhbmQgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25PbkVkaXRvcjxNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+LFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgTW9kZWwsIEVkaXRvck1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgIG1vZGVsOiBvcHRzPy5tb2RlbCxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHM/LnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an instance of `ActionEditorDescriptorInst` when positioned on another (parent) editor.\n *\n * @param {string} actionName - The name of the action associated with the editor.\n * @param {EditorDescriptorInst<EditorModel, ParentEditor>} editor - The editor descriptor defining editor on action.\n * @param {Object} [opts] - Optional parameters for configuring the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The descriptor for the model associated with the action.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for the action editor.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The desired position of action on the editor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor>} A configured instance of `ActionEditorDescriptorInst` representing the action editor.\n */\nexport function actionEditorOnEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2VkaXRvci1hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0csT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsVUFBa0IsRUFDbEIsTUFBdUQsRUFDdkQsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBcUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUMxSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZSwgYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0YCB3aGVuIHBvc2l0aW9uZWQgb24gYW5vdGhlciAocGFyZW50KSBlZGl0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGRlZmluaW5nIGVkaXRvciBvbiBhY3Rpb24uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgY29uZmlndXJpbmcgdGhlIGFjdGlvbiBlZGl0b3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBkZXNjcmlwdG9yIGZvciB0aGUgbW9kZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT59IFtvcHRzLnNlcnZpY2VQcm92aWRlcl0gLSBUaGUgc2VydmljZSBwcm92aWRlciB0eXBlIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7QWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0fSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgZGVzaXJlZCBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGhlIGVkaXRvci5cbiAqIEByZXR1cm4ge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gQSBjb25maWd1cmVkIGluc3RhbmNlIG9mIGBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdGAgcmVwcmVzZW50aW5nIHRoZSBhY3Rpb24gZWRpdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25FZGl0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvcj4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KTtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified table with table row execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The descriptor of the table on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table row and model.\n */\nexport function actionOnTableRow(actionName, table, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Defines an action to be positioned on a specified table with table header or footer execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table top and model.\n */\nexport function actionOnTableTop(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy90YWJsZS1hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixVQUFrQixFQUNsQixLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFnRCxVQUFVLEVBQUU7UUFDdkYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsVUFBa0IsRUFDbEIsSUFJQztJQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBOEMsVUFBVSxFQUFFO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbkYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgcm93IGV4ZWN1dGlvbiBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gVGhlIG5hbWUgaWRlbnRpZnlpbmcgdGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSBkZXNjcmlwdG9yIG9mIHRoZSB0YWJsZSBvbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgcGxhY2VkIGFuZCBleGVjdXRlZC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGJlaGF2aW9yLlxuICogQHBhcmFtIHtNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy5tb2RlbF0gLSBUaGUgbW9kZWwgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPn0gW29wdHMuc2VydmljZVByb3ZpZGVyXSAtIFRoZSBzZXJ2aWNlIHByb3ZpZGVyIHR5cGUgZm9yIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgYWN0aW9uIG9uIHRhYmxlLlxuICogQHJldHVybiB7QWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPn0gLSBBbiBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUgcm93IGFuZCBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbk9uVGFibGVSb3c8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICB0YWJsZTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgaGVhZGVyIG9yIGZvb3RlciBleGVjdXRpb24gY29udGV4dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIGlkZW50aWZ5aW5nIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVGFibGVIZWFkZXJ9IFtvcHRzLnBvc2l0aW9uXSAtIFRoZSBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+fSAtIEFuIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZGVzY3JpcHRvciBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZSB0b3AgYW5kIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uT25UYWJsZVRvcDxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyO1xuICAgIH1cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an ActionEditorDescriptorInst for displaying editor action on table row.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The table descriptor instance representing the table on which the action is positioned.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position where the action should be displayed on the table row.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableRow(actionName, editor, table, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Creates and returns an action editor descriptor configured with the given parameters.\n * This is used to define an action editor positioned relative to a table.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of the action on the table.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableTop(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzNHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXRFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLDBCQUEwQixDQUFxRixNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQzFJLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsVUFBa0IsRUFDbEIsTUFBMkQsRUFDM0QsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBbUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUN4SSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBmb3IgZGlzcGxheWluZyBlZGl0b3IgYWN0aW9uIG9uIHRhYmxlIHJvdy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0VkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+fSBlZGl0b3IgLSBUaGUgZWRpdG9yIGRlc2NyaXB0b3IgaW5zdGFuY2UgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBlZGl0b3IgYmVoYXZpb3IuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSB0YWJsZSBkZXNjcmlwdG9yIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgdGFibGUgb24gd2hpY2ggdGhlIGFjdGlvbiBpcyBwb3NpdGlvbmVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGFjdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkIG9uIHRoZSB0YWJsZSByb3cuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsPn0gVGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25UYWJsZVJvdzxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbSwgVGFibGVNb2RlbCwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0+LFxuICAgIHRhYmxlOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIGFueSwgYW55PixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAqIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYW4gYWN0aW9uIGVkaXRvciBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGEgdGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgYW55Pn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlIHJlc3BvbnNpYmxlIGZvciBjb25maWd1cmluZyB0aGUgZWRpdG9yIGJlaGF2aW9yLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGFjdGlvbiBvbiB0aGUgdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZD59IFRoZSBjb25maWd1cmVkIGFjdGlvbiBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvck9uVGFibGVUb3A8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0sIE1vZGVsID0gRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5UYWJsZUhlYWRlcjtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgUGFyZW50RWRpdG9ySXRlbT4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIFBhcmVudEVkaXRvckl0ZW0+KGVkaXRvciwgYWN0aW9uTmFtZSwge1xuICAgICAgICBtb2RlbDogb3B0cz8ubW9kZWwsXG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KTtcbn1cbiJdfQ==","import { ACommonsErrorBase } from '@mediusinc/mng-commons/core';\nexport class CommonsActionError extends ACommonsErrorBase {\n constructor(message, actionName, options) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n this.type = 'CommonsActionError';\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVycm9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUErQyxNQUFNLDZCQUE2QixDQUFDO0FBUzVHLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFPckQsWUFBWSxPQUFlLEVBQUUsVUFBa0IsRUFBRSxPQUFtQztRQUNoRixLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxFQUFFLHFCQUFxQixHQUFHLFVBQVU7WUFDeEMsR0FBRyxPQUFPO1NBQ2IsQ0FBQyxDQUFDO1FBVlMsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBWXhDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7SUFDeEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwRXJyb3JSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge0FDb21tb25zRXJyb3JCYXNlLCBDb21tb25zRXJyb3JCYXNlT3B0aW9ucywgSUNvbW1vbnNBY3Rpb25FcnJvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNBY3Rpb25FcnJvck9wdGlvbnMgZXh0ZW5kcyBDb21tb25zRXJyb3JCYXNlT3B0aW9ucyB7XG4gICAgYWN0aW9uQ29udGV4dD86IElBY3Rpb25Db250ZXh0PGFueSwgYW55LCBhbnk+O1xuICAgIGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tbW9uc0FjdGlvbkVycm9yIGV4dGVuZHMgQUNvbW1vbnNFcnJvckJhc2UgaW1wbGVtZW50cyBJQ29tbW9uc0FjdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdDb21tb25zQWN0aW9uRXJyb3InO1xuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpb25JZDogc3RyaW5nO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbkNvbnRleHQ/OiBJQWN0aW9uQ29udGV4dDxhbnksIGFueT47XG4gICAgcHVibGljIHJlYWRvbmx5IGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhY3Rpb25OYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBDb21tb25zQWN0aW9uRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tb25zQWN0aW9uRXJyb3JfJyArIGFjdGlvbk5hbWUsXG4gICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uSWQgPSBhY3Rpb25OYW1lO1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRleHQgPSBvcHRpb25zPy5hY3Rpb25Db250ZXh0O1xuICAgICAgICB0aGlzLmh0dHBFcnJvciA9IG9wdGlvbnM/Lmh0dHBFcnJvcjtcbiAgICB9XG59XG4iXX0=","import { isObservable, map, throwError } from 'rxjs';\nimport { CommonsInternalError, toObservable } from '@mediusinc/mng-commons/core';\nimport { CommonsActionError } from '../models/action-error.model';\nexport function runFnFromDataProviderOrFallback(ctx, fn, fallback) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\nexport function runFnFromDataProviderOrFail(ctx, fn) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(() => new CommonsActionError(`Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`, ctx.contextLongName, { actionContext: ctx }));\n}\nexport function runGetAllFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll'] === 'function') {\n const tableDataProvider = ctx.dataProvider;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\nexport function runFetchFromDataProvider(ctx, opts) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId\n ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)).pipe(map(res => {\n if (opts?.reason === 'update') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToUpdateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToUpdate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToUpdateItem === 'function') {\n return editorDataProvider.mapFetchItemToUpdateItem(res);\n }\n }\n else if (opts?.reason === 'create') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToCreateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToCreate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToCreateItem === 'function') {\n return editorDataProvider.mapFetchItemToCreateItem(res);\n }\n }\n return res;\n }))\n : null;\n }\n }\n return null;\n}\nexport function runCreateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runUpdateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runDeleteFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.item)) : null; // this is not exactly correct cast as the delete function should never receive Item, but in many cases it ain't so\n }\n }\n return null;\n}\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService(injector, dataProvider) {\n if (dataProvider?.serviceType) {\n const service = injector.get(dataProvider.serviceType, undefined, { optional: true });\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n }\n else {\n return null;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFDLG9CQUFvQixFQUEyQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdoRSxNQUFNLFVBQVUsK0JBQStCLENBQzNDLEdBQWlELEVBQ2pELEVBQW9GLEVBQ3BGLFFBQW9DO0lBRXBDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN2QyxHQUFpRCxFQUNqRCxFQUFvRjtJQUVwRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQ2IsR0FBRyxFQUFFLENBQ0QsSUFBSSxrQkFBa0IsQ0FDbEIsaUVBQWlFLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxN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QUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsbUhBQW1IO1FBQ3hRLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO0lBQ2pILElBQUksWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQVUsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksb0JBQW9CLENBQUMsOEJBQThCLFlBQVksQ0FBQyxXQUFXLHlCQUF5QixDQUFDLENBQUM7UUFDcEgsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIG1hcCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIERhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZSwgdG9PYnNlcnZhYmxlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtDb21tb25zQWN0aW9uRXJyb3J9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhbGxiYWNrPEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2UsIFJldHVybiwgRmFsbGJhY2tSZXR1cm4gPSBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsLFxuICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPEZhbGxiYWNrUmV0dXJuPlxuKTogT2JzZXJ2YWJsZTxSZXR1cm4gfCBGYWxsYmFja1JldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkZuRnJvbURhdGFQcm92aWRlck9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlLCBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsXG4pOiBPYnNlcnZhYmxlPFJldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgbmV3IENvbW1vbnNBY3Rpb25FcnJvcihcbiAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBjb3VsZCBub3QgZXh0cmFjdCBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5fSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gLFxuICAgICAgICAgICAgICAgIGN0eC5jb250ZXh0TG9uZ05hbWUsXG4gICAgICAgICAgICAgICAge2FjdGlvbkNvbnRleHQ6IGN0eH1cbiAgICAgICAgICAgIClcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuR2V0QWxsRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGN0eC5kYXRhUHJvdmlkZXJbJ2dldEFsbCcgYXMga2V5b2Ygb2JqZWN0XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB0YWJsZURhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSVRhYmxlRGF0YVByb3ZpZGVyPEl0ZW0sIGFueT47XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBjdHgucGFyYW1ldGVycz8uZGF0YUxpc3RQYXJhbXMgPz8ge307XG4gICAgICAgIHJldHVybiB0b09ic2VydmFibGUodGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsKHF1ZXJ5UGFyYW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFJ1bkZldGNoRnJvbURhdGFQcm92aWRlck9wdHNUeXBlID0ge1xuICAgIHN0cmljdD86IGJvb2xlYW47XG4gICAgcmVhc29uPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZTtcbn07XG5leHBvcnQgdHlwZSBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlID0gJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdmZXRjaCc7XG5leHBvcnQgZnVuY3Rpb24gcnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihcbiAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICBvcHRzPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyT3B0c1R5cGVcbik6IE9ic2VydmFibGU8SXRlbT4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+O1xuICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5mZXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWRcbiAgICAgICAgICAgICAgICA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZmV0Y2goY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHguc2VydmljZUluc3RhbmNlLCBjdHgucGFyYW1ldGVycy5sb2NhbGUpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cz8ucmVhc29uID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHM/LnN0cmljdCAmJiB0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgbWFwRmV0Y2hUb1VwZGF0ZSBmdW5jdGlvbiBtdXN0IGJlIHByb3ZpZGVkIGluIGRhdGEgcHJvdmlkZXJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdHM/LnJlYXNvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzPy5zdHJpY3QgJiYgdHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYG1hcEZldGNoVG9DcmVhdGUgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCBpbiBkYXRhIHByb3ZpZGVyYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIubWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0ocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQ3JlYXRlRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gdG9PYnNlcnZhYmxlKGVkaXRvckRhdGFQcm92aWRlci5jcmVhdGUoY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkpIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVwZGF0ZUZyb21EYXRhUHJvdmlkZXI8SXRlbSwgUGFyYW1ldGVySXRlbSwgc2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBzZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55LCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyB0b09ic2VydmFibGUoZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5EZWxldGVGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PjtcbiAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnNlcnZpY2VJbnN0YW5jZSwgY3R4LnBhcmFtZXRlcnMuaXRlbSkpIDogbnVsbDsgLy8gdGhpcyBpcyBub3QgZXhhY3RseSBjb3JyZWN0IGNhc3QgYXMgdGhlIGRlbGV0ZSBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgcmVjZWl2ZSBJdGVtLCBidXQgaW4gbWFueSBjYXNlcyBpdCBhaW4ndCBzb1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICpcbiAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBpbnN0YW5jZVxuICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVByb3ZpZGVyU2VydmljZTxJdGVtLCBTZXJ2aWNlPihpbmplY3RvcjogSW5qZWN0b3IsIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4pOiBTZXJ2aWNlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdG9yLmdldDxTZXJ2aWNlPihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUsIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgICAgIGlmICghc2VydmljZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEYXRhIHByb3ZpZGVyIHNlcnZpY2UgdHlwZSAke2RhdGFQcm92aWRlci5zZXJ2aWNlVHlwZX0gY291bGQgbm90IGJlIGluamVjdGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==","/**\n * States of action. Enums ending with \"*Final\" are supposed to be final.\n */\nexport var ActionInstanceStateEnum;\n(function (ActionInstanceStateEnum) {\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerStart\"] = 0] = \"TriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerEnd\"] = 1] = \"TriggerEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationStart\"] = 2] = \"ActivationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationEnd\"] = 3] = \"ActivationEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchStart\"] = 4] = \"FetchStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchEnd\"] = 5] = \"FetchEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchError\"] = 6] = \"FetchError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationStart\"] = 7] = \"RunConfirmationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndAccept\"] = 8] = \"RunConfirmationEndAccept\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndReject\"] = 9] = \"RunConfirmationEndReject\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunStart\"] = 10] = \"RunStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunEnd\"] = 11] = \"RunEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunError\"] = 12] = \"RunError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionStart\"] = 13] = \"NextActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionEnd\"] = 14] = \"NextActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionStart\"] = 15] = \"ErrorActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionEnd\"] = 16] = \"ErrorActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessFinal\"] = 17] = \"FinishSuccessFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishErrorFinal\"] = 18] = \"FinishErrorFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishDismissedFinal\"] = 19] = \"FinishDismissedFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessReactivateFinal\"] = 20] = \"FinishSuccessReactivateFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishComponentDestroyFinal\"] = 21] = \"FinishComponentDestroyFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerStart\"] = 22] = \"FinishRouteUntriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerEndFinal\"] = 23] = \"FinishRouteUntriggerEndFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerTimeoutFinal\"] = 24] = \"FinishRouteUntriggerTimeoutFinal\";\n})(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksdUJBMEJYO0FBMUJELFdBQVksdUJBQXVCO0lBQy9CLHFGQUFZLENBQUE7SUFDWixpRkFBVSxDQUFBO0lBQ1YsMkZBQWUsQ0FBQTtJQUNmLHVGQUFhLENBQUE7SUFDYixpRkFBVSxDQUFBO0lBQ1YsNkVBQVEsQ0FBQTtJQUNSLGlGQUFVLENBQUE7SUFDVixxR0FBb0IsQ0FBQTtJQUNwQiw2R0FBd0IsQ0FBQTtJQUN4Qiw2R0FBd0IsQ0FBQTtJQUN4Qiw4RUFBUSxDQUFBO0lBQ1IsMEVBQU0sQ0FBQTtJQUNOLDhFQUFRLENBQUE7SUFDUiw0RkFBZSxDQUFBO0lBQ2Ysd0ZBQWEsQ0FBQTtJQUNiLDhGQUFnQixDQUFBO0lBQ2hCLDBGQUFjLENBQUE7SUFDZCxrR0FBa0IsQ0FBQTtJQUNsQiw4RkFBZ0IsQ0FBQTtJQUNoQixzR0FBb0IsQ0FBQTtJQUNwQixzSEFBNEIsQ0FBQTtJQUM1QixvSEFBMkIsQ0FBQTtJQUMzQixnSEFBeUIsQ0FBQTtJQUN6QixzSEFBNEIsQ0FBQTtJQUM1Qiw4SEFBZ0MsQ0FBQTtBQUNwQyxDQUFDLEVBMUJXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUEwQmxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0ZXMgb2YgYWN0aW9uLiBFbnVtcyBlbmRpbmcgd2l0aCBcIipGaW5hbFwiIGFyZSBzdXBwb3NlZCB0byBiZSBmaW5hbC5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0ge1xuICAgIFRyaWdnZXJTdGFydCwgLy8gYWN0aW9uIHdhcyB0cmlnZ2VyZWQgKGNsaWNrIG9yIGRpcmVjdClcbiAgICBUcmlnZ2VyRW5kLFxuICAgIEFjdGl2YXRpb25TdGFydCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gc3RhcnRlZCAoZGlyZWN0LCBldmVudCBvciBlZGl0b3IpXG4gICAgQWN0aXZhdGlvbkVuZCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gZW5kZWRcbiAgICBGZXRjaFN0YXJ0LCAvLyBmZXRjaCBzdGFydGVkXG4gICAgRmV0Y2hFbmQsIC8vIGZldGNoIGVuZGVkXG4gICAgRmV0Y2hFcnJvciwgLy8gZmV0Y2ggZXJyb3JcbiAgICBSdW5Db25maXJtYXRpb25TdGFydCwgLy8gY29uZmlybWF0aW9uIGZvciBydW4gaXMgc3RhcnRlZFxuICAgIFJ1bkNvbmZpcm1hdGlvbkVuZEFjY2VwdCwgLy8gY29uZmlybWF0aW9uIGFjY2VwdGVkXG4gICAgUnVuQ29uZmlybWF0aW9uRW5kUmVqZWN0LCAvLyBjb25maXJtYXRpb24gcmVqZWN0ZWRcbiAgICBSdW5TdGFydCwgLy8gYWN0aW9uIHdhcyBydW4gYnkgY2FsbGluZyBtYWluIGZ1bmN0aW9uXG4gICAgUnVuRW5kLCAvLyBhY3Rpb24gcnVuIGZ1bmN0aW9uIGV4ZWN1dGVkXG4gICAgUnVuRXJyb3IsIC8vIGFjdGlvbiBydW4gZnVuY3Rpb24gZXhlY3V0ZWQgd2l0aCBlcnJvclxuICAgIE5leHRBY3Rpb25TdGFydCwgLy8gbmV4dCBhY3Rpb24gc3RhcnRlZFxuICAgIE5leHRBY3Rpb25FbmQsIC8vIG5leHQgYWN0aW9uIGZpbmlzaGVkXG4gICAgRXJyb3JBY3Rpb25TdGFydCwgLy8gZXJyb3IgYWN0aW9uIHN0YXJ0ZWRcbiAgICBFcnJvckFjdGlvbkVuZCwgLy8gZXJyb3IgYWN0aW9uIGZpbmlzaGVkXG4gICAgRmluaXNoU3VjY2Vzc0ZpbmFsLCAvLyBhY3Rpb24gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgRmluaXNoRXJyb3JGaW5hbCwgLy8gYWN0aW9uIGV4ZWN1dGVkIHdpdGggZXJyb3JcbiAgICBGaW5pc2hEaXNtaXNzZWRGaW5hbCwgLy8gYWN0aW9uIHdhcyBkaXNtaXNzZWQgYnkgdXNlclxuICAgIEZpbmlzaFN1Y2Nlc3NSZWFjdGl2YXRlRmluYWwsIC8vIGFjdGlvbiBleGVjdXRlZCBzdWNjZXNzZnVsbHksIGFub3RoZXIgaW5zdGFuY2Ugd2lsbCBkaXJlY3RseSBzdGFydCBmcm9tIHByZXZpb3VzXG4gICAgRmluaXNoQ29tcG9uZW50RGVzdHJveUZpbmFsLCAvLyBhY3Rpb24gd2FzIGRpc21pc3NlZCBieSBkZXN0cm95aW5nIGNvbXBvbmVudCB0aGF0IHdhcyBleGVjdXRpbmcgaXRcbiAgICBGaW5pc2hSb3V0ZVVudHJpZ2dlclN0YXJ0LFxuICAgIEZpbmlzaFJvdXRlVW50cmlnZ2VyRW5kRmluYWwsXG4gICAgRmluaXNoUm91dGVVbnRyaWdnZXJUaW1lb3V0RmluYWxcbn1cbiJdfQ==","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n static { this.READ = '_defaultTwRead'; }\n static { this.ADD = '_defaultTwAdd'; }\n static { this.EDIT = '_defaultTwEdit'; }\n static { this.DELETE = '_defaultTwDelete'; }\n static { this.DETAILS = '_defaultTwDetails'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFnQzthQUNsQixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsUUFBRyxHQUFHLGVBQWUsQ0FBQzthQUN0QixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsV0FBTSxHQUFHLGtCQUFrQixDQUFDO2FBQzVCLFlBQU8sR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmYXVsdCBjYXRlZ29yaWVzIGZvciB0YWJsZXZpZXcgYWN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRCA9ICdfZGVmYXVsdFR3UmVhZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBREQgPSAnX2RlZmF1bHRUd0FkZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUID0gJ19kZWZhdWx0VHdFZGl0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFTEVURSA9ICdfZGVmYXVsdFR3RGVsZXRlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFVEFJTFMgPSAnX2RlZmF1bHRUd0RldGFpbHMnO1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT = new InjectionToken('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QixJQUFJLGNBQWMsQ0FBWSxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVDogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KCdEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVCcpO1xuIl19","import { getDataProviderService, runFnFromDataProviderOrFail } from '../helpers/data-provider-executors';\nexport class DataProviderExecutor {\n runGetAllOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runGetAll.bind(this));\n }\n runFetchOrFail(ctx, fetchReason) {\n return runFnFromDataProviderOrFail(ctx, ctx => this.runFetch(ctx, fetchReason));\n }\n runCreateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runCreate.bind(this));\n }\n runUpdateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runUpdate.bind(this));\n }\n runDeleteOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runDelete.bind(this));\n }\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n getDataProviderService(injector, dataProvider) {\n return getDataProviderService(injector, dataProvider);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQXFDLHNCQUFzQixFQUFFLDJCQUEyQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHM0ksTUFBTSxPQUFnQixvQkFBb0I7SUFDL0IsZUFBZSxDQUFnQyxHQUFrRDtRQUNwRyxPQUFPLDJCQUEyQixDQUFzRCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBYU0sY0FBYyxDQUFnQyxHQUFrRCxFQUFFLFdBQWdEO1FBQ3JKLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQXNCTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO1FBQ3hHLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0RhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlLCBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlLCBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWx9IGZyb20gJy4uL2hlbHBlcnMvZGF0YS1wcm92aWRlci1leGVjdXRvcnMnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhUHJvdmlkZXJFeGVjdXRvciB7XG4gICAgcHVibGljIHJ1bkdldEFsbE9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIERhdGFMaXN0UmVzdWx0PEl0ZW0+PihjdHgsIHRoaXMucnVuR2V0QWxsLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s6IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkZldGNoT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmV0Y2hSZWFzb24/OiBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlKTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgY3R4ID0+IHRoaXMucnVuRmV0Y2goY3R4LCBmZXRjaFJlYXNvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbj86IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGVcbiAgICApOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbjogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZmFsbGJhY2s6IHVuZGVmaW5lZFxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrPzogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj5cbiAgICApOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG5cbiAgICBwdWJsaWMgcnVuQ3JlYXRlT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8SXRlbT4ge1xuICAgICAgICByZXR1cm4gcnVuRm5Gcm9tRGF0YVByb3ZpZGVyT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlLCBJdGVtPihjdHgsIHRoaXMucnVuQ3JlYXRlLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkNyZWF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIHB1YmxpYyBydW5VcGRhdGVPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5VcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuVXBkYXRlPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmFsbGJhY2s6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkRlbGV0ZU9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5EZWxldGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGluc3RhbmNlXG4gICAgICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlPEl0ZW0sIFNlcnZpY2U+KGluamVjdG9yOiBJbmplY3RvciwgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPik6IFNlcnZpY2UgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGdldERhdGFQcm92aWRlclNlcnZpY2UoaW5qZWN0b3IsIGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuIl19","import { EditorDataProviderInst } from './editor.data-provider';\n/**\n * Creates and returns an instance of `EditorDataProviderInst` with the specified options for managing editor data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.createType] - The descriptor defining the create type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.updateType] - The descriptor defining the update type.\n * @return {EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>} An instance of `EditorDataProviderInst` configured according to the provided options.\n */\nexport function editorDataProvider(opts) {\n return new EditorDataProviderInst(opts?.service);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3ItZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FNaEMsSUFLRDtJQUNHLE9BQU8sSUFBSSxzQkFBc0IsQ0FBeUQsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM3SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEYXRhUHJvdmlkZXJJbnN0fSBmcm9tICcuL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0YCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucyBmb3IgbWFuYWdpbmcgZWRpdG9yIGRhdGEuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFRoZSBvcHRpb25zIG9iamVjdCB0byBjb25maWd1cmUgdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLnR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHR5cGUgb2YgbW9kZWwuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IFtvcHRzLnNlcnZpY2VdIC0gVGhlIHNlcnZpY2UgY2xhc3MgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD59IFtvcHRzLmNyZWF0ZVR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIGNyZWF0ZSB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy51cGRhdGVUeXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm4ge0VkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPn0gQW4gaW5zdGFuY2Ugb2YgYEVkaXRvckRhdGFQcm92aWRlckluc3RgIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG59KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\n/**\n * @experimental\n */\nexport class EditorDescriptorNestedObjectWrapper {\n #path;\n #editor;\n constructor(editor, basePath) {\n this.#editor = editor;\n this.#path = basePath;\n }\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this.#editor, this.getNestedPropertyPath(property));\n }\n getNestedPropertyPath(p) {\n return `${this.#path}.${p}`;\n }\n getField(property) {\n return this.#editor.getFieldUnsafe(this.getNestedPropertyPath(property));\n }\n removeField(property) {\n this.#editor.removeFieldUnsafe(this.getNestedPropertyPath(property));\n }\n addField(property) {\n return this.#editor.addFieldUnsafe(this.getNestedPropertyPath(property));\n }\n withFields(...properties) {\n properties.forEach(p => this.#editor.addFieldUnsafe(this.getNestedPropertyPath(p)));\n return this;\n }\n addFieldLookup(property, opts) {\n return this.#editor.addFieldLookupUnsafe(this.getNestedPropertyPath(property), opts);\n }\n addFieldLookupEnum(property, enumModel, options) {\n return this.#editor.addFieldLookupEnumUnsafe(this.getNestedPropertyPath(property), enumModel, options);\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.#editor.addFieldManyEditorUnsafe(this.getNestedPropertyPath(property), tableviewDescriptor);\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.#editor.addFieldManyToManyEditorUnsafe(this.getNestedPropertyPath(property), mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldDescriptor(field) {\n if (!field.property.startsWith(this.#path)) {\n throw new CommonsInternalError(`Field ${field.property} cannot be added to nested object property ${this.#path}: Paths do not match.`);\n }\n this.#editor.addFieldDescriptor(field);\n return this;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3ItbmVzdGVkLW9iamVjdC13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLG9CQUFvQixFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBU3hIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1DQUFtQztJQUc1QyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQTREO0lBRW5FLFlBQVksTUFBaUUsRUFBRSxRQUFnQjtRQUMzRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUNGLFFBQWtCO1FBRWxCLE9BQU8sSUFBSSxtQ0FBbUMsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQ3ZDLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsQ0FBNEI7UUFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW1DO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQUcsVUFBeUM7UUFDbkQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWMsQ0FLWixRQUFrQixFQUFFLElBQTBEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBa0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxRQUFrQixFQUNsQixTQUErQixFQUMvQixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsa0JBQWtCLENBQ2QsUUFBa0IsRUFDbEIsbUJBQWdIO1FBRWhILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBeUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELHdCQUF3QixDQU1wQixRQUFrQixFQUNsQixtQkFBMkQsRUFDM0QscUJBQTZELEVBQzdELGtCQUEyRDtRQUUzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFDcEMsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsQ0FDckIsQ0FBQztJQUNOLENBQUM7SUFFRCxrQkFBa0IsQ0FBc0MsS0FBK0U7UUFDbkksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEtBQUssQ0FBQyxRQUFRLDhDQUE4QyxJQUFJLENBQUMsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNJLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgQ29tbW9uc0ludGVybmFsRXJyb3IsIElUYWJsZURlc2NyaXB0b3IsIElUYWJsZXZpZXdEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0cywgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZCwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBQcm9wZXJ0eU9iamVjdE1vZGVsPlxuICAgIGltcGxlbWVudHMgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIFByb3BlcnR5T2JqZWN0TW9kZWw+XG57XG4gICAgI3BhdGg6IHN0cmluZztcbiAgICAjZWRpdG9yOiBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3I6IElGaWVsZHNNYW5hZ2VXaXRoR2V0RmllbGQ8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgYmFzZVBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLiNlZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMuI3BhdGggPSBiYXNlUGF0aDtcbiAgICB9XG5cbiAgICBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxQcm9wZXJ0eU9iamVjdE1vZGVsW1Byb3BlcnR5XT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgICAgICB0aGlzLiNlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXROZXN0ZWRQcm9wZXJ0eVBhdGgocDoga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy4jcGF0aH0uJHtwIGFzIHN0cmluZ31gO1xuICAgIH1cblxuICAgIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogQUZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLiNlZGl0b3IucmVtb3ZlRmllbGRVbnNhZmUodGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZDxQcm9wZXJ0eUZpZWxkIGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHlGaWVsZF0+LCBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eUZpZWxkXT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eUZpZWxkXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsKVtdKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHRoaXMuI2VkaXRvci5hZGRGaWVsZFVuc2FmZSh0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwKSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhZGRGaWVsZExvb2t1cDxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBGaWVsZE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+ID0gTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxGaWVsZE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICByZXR1cm4gdGhpcy4jZWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHRoaXMuZ2V0TmVzdGVkUHJvcGVydHlQYXRoKHByb3BlcnR5KSwgb3B0cyk7XG4gICAgfVxuXG4gICAgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPixcbiAgICAgICAgb3B0aW9ucz86IEFycmF5PEVudW0+XG4gICAgKTogRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCBlbnVtTW9kZWwsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGFkZEZpZWxkTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFByb3BlcnR5T2JqZWN0TW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBJVGFibGV2aWV3RGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZE1hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cERhdGFQcm92aWRlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBpZiAoIWZpZWxkLnByb3BlcnR5LnN0YXJ0c1dpdGgodGhpcy4jcGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmllbGQgJHtmaWVsZC5wcm9wZXJ0eX0gY2Fubm90IGJlIGFkZGVkIHRvIG5lc3RlZCBvYmplY3QgcHJvcGVydHkgJHt0aGlzLiNwYXRofTogUGF0aHMgZG8gbm90IG1hdGNoLmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2VkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=","export var TableviewEditorTypeEnum;\n(function (TableviewEditorTypeEnum) {\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"None\"] = 0] = \"None\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Details\"] = 1] = \"Details\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Add\"] = 3] = \"Add\";\n})(TableviewEditorTypeEnum || (TableviewEditorTypeEnum = {}));\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBS1g7QUFMRCxXQUFZLHVCQUF1QjtJQUMvQixxRUFBSSxDQUFBO0lBQ0osMkVBQU8sQ0FBQTtJQUNQLHFFQUFJLENBQUE7SUFDSixtRUFBRyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFLbEM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bSB7XG4gICAgTm9uZSxcbiAgICBEZXRhaWxzLFxuICAgIEVkaXQsXG4gICAgQWRkXG59XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FID0gJ19kZWZhdWx0JztcbiJdfQ==","export var FieldSizeEnum;\n(function (FieldSizeEnum) {\n FieldSizeEnum[FieldSizeEnum[\"Small\"] = 0] = \"Small\";\n FieldSizeEnum[FieldSizeEnum[\"Normal\"] = 1] = \"Normal\";\n FieldSizeEnum[FieldSizeEnum[\"Large\"] = 2] = \"Large\";\n})(FieldSizeEnum || (FieldSizeEnum = {}));\nexport var FieldInputTypeEnum;\n(function (FieldInputTypeEnum) {\n FieldInputTypeEnum[FieldInputTypeEnum[\"Hidden\"] = 0] = \"Hidden\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Label\"] = 1] = \"Label\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Text\"] = 2] = \"Text\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Textarea\"] = 3] = \"Textarea\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Number\"] = 4] = \"Number\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Currency\"] = 5] = \"Currency\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Switch\"] = 6] = \"Switch\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Radio\"] = 7] = \"Radio\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Datepicker\"] = 8] = \"Datepicker\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Mask\"] = 9] = \"Mask\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"File\"] = 10] = \"File\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageFile\"] = 11] = \"ImageFile\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageUrl\"] = 12] = \"ImageUrl\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Custom\"] = 13] = \"Custom\";\n})(FieldInputTypeEnum || (FieldInputTypeEnum = {}));\nexport var FieldLookupTypeEnum;\n(function (FieldLookupTypeEnum) {\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dropdown\"] = 0] = \"Dropdown\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Autocomplete\"] = 1] = \"Autocomplete\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dialog\"] = 2] = \"Dialog\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Custom\"] = 3] = \"Custom\";\n})(FieldLookupTypeEnum || (FieldLookupTypeEnum = {}));\nexport var FieldManyToManyEditorTypeEnum;\n(function (FieldManyToManyEditorTypeEnum) {\n FieldManyToManyEditorTypeEnum[FieldManyToManyEditorTypeEnum[\"DialogTableMultiselect\"] = 0] = \"DialogTableMultiselect\";\n})(FieldManyToManyEditorTypeEnum || (FieldManyToManyEditorTypeEnum = {}));\nexport var FieldManyToManyEditorActionEnum;\n(function (FieldManyToManyEditorActionEnum) {\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Add\"] = 0] = \"Add\";\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Delete\"] = 1] = \"Delete\";\n})(FieldManyToManyEditorActionEnum || (FieldManyToManyEditorActionEnum = {}));\nexport var FieldManyEditorTypeEnum;\n(function (FieldManyEditorTypeEnum) {\n FieldManyEditorTypeEnum[FieldManyEditorTypeEnum[\"DialogEditor\"] = 0] = \"DialogEditor\";\n})(FieldManyEditorTypeEnum || (FieldManyEditorTypeEnum = {}));\nexport var FieldManyEditorActionEnum;\n(function (FieldManyEditorActionEnum) {\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"View\"] = 0] = \"View\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Add\"] = 1] = \"Add\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Edit\"] = 2] = \"Edit\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Delete\"] = 3] = \"Delete\";\n})(FieldManyEditorActionEnum || (FieldManyEditorActionEnum = {}));\nexport var FieldGroupTypeEnum;\n(function (FieldGroupTypeEnum) {\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Tab\"] = 0] = \"Tab\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Fieldset\"] = 1] = \"Fieldset\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Logical\"] = 2] = \"Logical\";\n})(FieldGroupTypeEnum || (FieldGroupTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsbURBQUssQ0FBQTtJQUNMLHFEQUFNLENBQUE7SUFDTixtREFBSyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBZVg7QUFmRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLDJEQUFJLENBQUE7SUFDSixtRUFBUSxDQUFBO0lBQ1IsK0RBQU0sQ0FBQTtJQUNOLG1FQUFRLENBQUE7SUFDUiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLHVFQUFVLENBQUE7SUFDViwyREFBSSxDQUFBO0lBQ0osNERBQUksQ0FBQTtJQUNKLHNFQUFTLENBQUE7SUFDVCxvRUFBUSxDQUFBO0lBQ1IsZ0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFmVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBZTdCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixxRUFBUSxDQUFBO0lBQ1IsNkVBQVksQ0FBQTtJQUNaLGlFQUFNLENBQUE7SUFDTixpRUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7QUFFRCxNQUFNLENBQU4sSUFBWSw2QkFFWDtBQUZELFdBQVksNkJBQTZCO0lBQ3JDLHFIQUFzQixDQUFBO0FBQzFCLENBQUMsRUFGVyw2QkFBNkIsS0FBN0IsNkJBQTZCLFFBRXhDO0FBRUQsTUFBTSxDQUFOLElBQVksK0JBR1g7QUFIRCxXQUFZLCtCQUErQjtJQUN2QyxtRkFBRyxDQUFBO0lBQ0gseUZBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywrQkFBK0IsS0FBL0IsK0JBQStCLFFBRzFDO0FBRUQsTUFBTSxDQUFOLElBQVksdUJBRVg7QUFGRCxXQUFZLHVCQUF1QjtJQUMvQixxRkFBWSxDQUFBO0FBQ2hCLENBQUMsRUFGVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBRWxDO0FBRUQsTUFBTSxDQUFOLElBQVkseUJBS1g7QUFMRCxXQUFZLHlCQUF5QjtJQUNqQyx5RUFBSSxDQUFBO0lBQ0osdUVBQUcsQ0FBQTtJQUNILHlFQUFJLENBQUE7SUFDSiw2RUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFLcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLHlEQUFHLENBQUE7SUFDSCxtRUFBUSxDQUFBO0lBQ1IsaUVBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGVudW0gRmllbGRTaXplRW51bSB7XG4gICAgU21hbGwsXG4gICAgTm9ybWFsLFxuICAgIExhcmdlXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkSW5wdXRUeXBlRW51bSB7XG4gICAgSGlkZGVuLFxuICAgIExhYmVsLFxuICAgIFRleHQsXG4gICAgVGV4dGFyZWEsXG4gICAgTnVtYmVyLFxuICAgIEN1cnJlbmN5LFxuICAgIFN3aXRjaCxcbiAgICBSYWRpbyxcbiAgICBEYXRlcGlja2VyLFxuICAgIE1hc2ssXG4gICAgRmlsZSxcbiAgICBJbWFnZUZpbGUsXG4gICAgSW1hZ2VVcmwsXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTG9va3VwVHlwZUVudW0ge1xuICAgIERyb3Bkb3duLFxuICAgIEF1dG9jb21wbGV0ZSxcbiAgICBEaWFsb2csXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtIHtcbiAgICBEaWFsb2dUYWJsZU11bHRpc2VsZWN0XG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0ge1xuICAgIEFkZCxcbiAgICBEZWxldGVcbn1cblxuZXhwb3J0IGVudW0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0ge1xuICAgIERpYWxvZ0VkaXRvclxufVxuXG5leHBvcnQgZW51bSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtIHtcbiAgICBWaWV3LFxuICAgIEFkZCxcbiAgICBFZGl0LFxuICAgIERlbGV0ZVxufVxuXG5leHBvcnQgZW51bSBGaWVsZEdyb3VwVHlwZUVudW0ge1xuICAgIFRhYixcbiAgICBGaWVsZHNldCxcbiAgICBMb2dpY2FsXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ29uZmlnID0gb2JqZWN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkTG9va3VwQ29uZmlnIGV4dGVuZHMgRmllbGRDb25maWcge1xuICAgIHRhYmxlPzoge1xuICAgICAgICBoZWFkZXJUaXRsZUNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICAgICAgY29sdW1uQWN0aW9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIH07XG59XG4iXX0=","export class FieldValidationDescriptor {\n constructor(name, validator, message, options) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n get name() {\n return this._name;\n }\n get validator() {\n return this._validator;\n }\n get message() {\n return this._message;\n }\n get options() {\n return this._options;\n }\n copy() {\n const opt = this._options ? { ...this._options } : undefined;\n return new FieldValidationDescriptor(this._name, this._validator, this._message, opt);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8seUJBQXlCO0lBTWxDLFlBQ0ksSUFBWSxFQUNaLFNBQWdKLEVBQ2hKLE9BQTRFLEVBQzVFLE9BQTJDO1FBRTNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNELE9BQU8sSUFBSSx5QkFBeUIsQ0FBNkMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWVsZEFzeW5jQmFzZVZhbGlkYXRvciwgRmllbGRCYXNlVmFsaWRhdG9yLCBGaWVsZFZhbGlkYXRpb25NZXNzYWdlfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7ZXJyb3JQYXRoPzogUHJvcGVydHl9O1xuXG5leHBvcnQgY2xhc3MgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yPzogRmllbGRCYXNlVmFsaWRhdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4gfCBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZpZWxkQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgRmllbGRBc3luY0Jhc2VWYWxpZGF0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2U8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBvcHQgPSB0aGlzLl9vcHRpb25zID8gey4uLnRoaXMuX29wdGlvbnN9IDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9uYW1lLCB0aGlzLl92YWxpZGF0b3IsIHRoaXMuX21lc3NhZ2UsIG9wdCk7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { FieldSizeEnum } from '../models/field.model';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport const fieldDescriptorEmptyLabelType = '_emptyLabel';\nexport class AGenericFieldDescriptor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor() {\n this._config = {};\n this._formlyConfig = {};\n }\n get config() {\n return this._config;\n }\n get formlyConfig() {\n return this._formlyConfig;\n }\n withConfig(config) {\n this._config = config;\n return this;\n }\n withFormlyConfig(formlyConfig) {\n this._formlyConfig = formlyConfig;\n return this;\n }\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n toJSON() {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\nexport class AFieldDescriptor extends AGenericFieldDescriptor {\n constructor(property) {\n super();\n /** @ignore */ this._required = false;\n /** @ignore */ this._requiredHideLabelMarker = false;\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._validations = [];\n /** @ignore */ this._asyncValidations = [];\n /** @ignore */ this._validationOpts = {};\n /** @ignore */ this._updateOn = 'change';\n /** @ignore */ this._size = FieldSizeEnum.Normal;\n // localization\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._property = property;\n }\n get property() {\n return this._property;\n }\n get label() {\n return this._label;\n }\n get labelUseModelBase() {\n return this._labelUseModelBase;\n }\n get placeholder() {\n return this._placeholder;\n }\n get helpText() {\n return this._helpText;\n }\n get labelInfoTooltip() {\n return this._labelInfoTooltip;\n }\n get labelInfoTooltipIcon() {\n return this._labelInfoTooltipIcon;\n }\n get required() {\n return this._required;\n }\n get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n get disabled() {\n return this._disabled;\n }\n get defaultValue() {\n return this._defaultValue;\n }\n get getter() {\n return this._getter;\n }\n get setter() {\n return this._setter;\n }\n get validations() {\n return this._validations;\n }\n get asyncValidations() {\n return this._asyncValidations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get requiredExpression() {\n return this._requiredExpression;\n }\n get disabledExpression() {\n return this._disabledExpression;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n get updateOn() {\n return this._updateOn;\n }\n get onInit() {\n return this._onInit;\n }\n get onChanges() {\n return this._onChanges;\n }\n get afterContentInit() {\n return this._afterContentInit;\n }\n get afterViewInit() {\n return this._afterViewInit;\n }\n get onDestroy() {\n return this._onDestroy;\n }\n get onValueChange() {\n return this._onValueChange;\n }\n get className() {\n return this._className;\n }\n get size() {\n return this._size;\n }\n get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n /**\n * Set label for field.\n * @param label Full label (i18n path or other string). If null, no label will be used.\n * @param useModelBase If set to true, label will be appended to model's i18n base path.\n */\n withLabel(label, useModelBase) {\n this._label = label;\n this._labelUseModelBase = useModelBase;\n return this;\n }\n withEmptyLabel() {\n this._label = fieldDescriptorEmptyLabelType;\n return this;\n }\n withPlaceholder(placeholder) {\n this._placeholder = placeholder;\n return this;\n }\n withHelpText(helpText) {\n this._helpText = helpText;\n return this;\n }\n /**\n * Sets the label tooltip and optionally a custom icon for the field.\n *\n * @param {string} tooltip - The tooltip text to be displayed.\n * @param {string} [customIcon] - An optional custom icon to be used for the tooltip. If not provided, the default icon is used.\n */\n withLabelInfoTooltip(tooltip, customIcon) {\n this._labelInfoTooltip = tooltip;\n this._labelInfoTooltipIcon = customIcon ?? this._labelInfoTooltipIcon;\n return this;\n }\n withRequired(required = true, requiredExpression, hideLabelMarker = false) {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n withDisabled(disabled = true, disabledExpression) {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n withHidden(hiddenExpression, resetOnHide) {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n withUpdateOn(updateOn) {\n this._updateOn = updateOn;\n return this;\n }\n withOnInit(onInit) {\n this._onInit = onInit;\n return this;\n }\n withOnChanges(onChanges) {\n this._onChanges = onChanges;\n return this;\n }\n withAfterContentInit(afterContentInit) {\n this._afterContentInit = afterContentInit;\n return this;\n }\n withAfterViewInit(afterViewInit) {\n this._afterViewInit = afterViewInit;\n return this;\n }\n withOnDestroy(onDestroy) {\n this._onDestroy = onDestroy;\n return this;\n }\n withOnValueChange(onValueChange) {\n this._onValueChange = onValueChange;\n return this;\n }\n withDefaultValue(defaultValue) {\n this._defaultValue = defaultValue;\n return this;\n }\n withGetter(fn) {\n this._getter = fn;\n return this;\n }\n withSetter(fn) {\n this._setter = fn;\n return this;\n }\n withValidation(name, validator, message) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n removeValidation(name) {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n withAsyncValidation(name, asyncValidator, message) {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n removeAsyncValidation(name) {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n withSize(size = FieldSizeEnum.Normal) {\n this._size = size;\n return this;\n }\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n localized() {\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form,\n fieldFormControl: component.formControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n copyFieldsTo(obj) {\n obj._config = objectDeepCopy(this._config);\n obj._formlyConfig = objectDeepCopy(this._formlyConfig);\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._labelInfoTooltip = this._labelInfoTooltip;\n obj._labelInfoTooltipIcon = this._labelInfoTooltipIcon;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className ? { ...this._className } : undefined;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n obj._validationOpts = { ...this._validationOpts };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYmFzZS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBVyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHakUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsYUFBYSxDQUFDO0FBRTNELE1BQU0sT0FBZ0IsdUJBQXVCO0lBSXpDLGdFQUFnRTtJQUNoRTtRQUpVLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQUd2QixDQUFDO0lBRTFCLElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQW1CO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxZQUErQjtRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sTUFBTTtRQUNaLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxJQUFJO1lBQ1AsT0FBTyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBZUQsTUFBTSxPQUFnQixnQkFBa0csU0FBUSx1QkFBdUI7SUF5Q25KLFlBQXNCLFFBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBaENaLGNBQWMsQ0FBVyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNDLGNBQWMsQ0FBVyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDMUQsY0FBYyxDQUFXLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFJM0MsY0FBYyxDQUFXLGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQUM1RixjQUFjLENBQVcsc0JBQWlCLEdBQW9ELEVBQUUsQ0FBQztRQUNqRyxjQUFjLENBQVcsb0JBQWUsR0FBNEIsRUFBRSxDQUFDO1FBS3ZFLGNBQWMsQ0FBVyxjQUFTLEdBQWlDLFFBQVEsQ0FBQztRQVc1RSxjQUFjLENBQVcsVUFBSyxHQUFrQixhQUFhLENBQUMsTUFBTSxDQUFDO1FBRXJFLGVBQWU7UUFDZixjQUFjLENBQVcsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFOUMsY0FBYyxDQUFvQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUE4RCxDQUFDO1FBSXpILElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBSUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUFvQixFQUFFLFlBQXNCO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyw2QkFBNkIsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBZ0I7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksb0JBQW9CLENBQUMsT0FBZSxFQUFFLFVBQW1CO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLGtCQUE0RixFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQ3RKLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxlQUFlLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLGtCQUE0RjtRQUM3SCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLGdCQUF5RixFQUFFLFdBQXFCO1FBQzlILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBc0M7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFxRDtRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFNBQXdEO1FBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxnQkFBK0Q7UUFDdkYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxhQUE0RDtRQUNqRixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFNBQXdEO1FBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxhQUFxRztRQUMxSCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsWUFBd0I7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFzQztRQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLEVBQW1EO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQ2pCLElBQVksRUFDWixTQUFpRSxFQUNqRSxPQUF1RTtRQUV2RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSxTQUFzRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0ksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVk7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUN0QixJQUFZLEVBQ1osY0FBd0QsRUFDeEQsT0FBb0Q7UUFFcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSxjQUE2RCxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLElBQVk7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQzdFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxjQUF1QztRQUM3RCxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWtDO1FBQ25ELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRztnQkFDZCxJQUFJLEVBQUUsSUFBSTthQUNiLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXNCLGFBQWEsQ0FBQyxNQUFNO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTO1FBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FDWixJQUE0QixFQUM1QixTQUE0RSxFQUM1RSxJQUFrRDtRQUVsRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixJQUFJLEVBQUUsSUFBSTtZQUNWLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLGFBQWEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtZQUNsRCxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQWlCO1lBQ2xDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxXQUEwQjtZQUN0RCxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FBSztZQUNsQyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUE2RTtRQUNoRyxHQUFHLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsR0FBRyxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMvQyxHQUFHLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDL0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxHQUFHLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ25ELEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDL0MsR0FBRyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRCxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDL0IsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDakMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMvQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDekMsR0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbkQsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLEdBQUcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7R2V0dGVyRm4sIG9iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkQXN5bmNCYXNlVmFsaWRhdG9yLCBGaWVsZEFzeW5jVmFsaWRhdG9yLCBGaWVsZEJhc2VWYWxpZGF0b3IsIEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2UsIEZpZWxkVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0ZpZWxkQ29uZmlnLCBGaWVsZFNpemVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGb3JtRmllbGRFdmVudCwgRm9ybUZpZWxkRXZlbnREYXRhLCBGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWcsIENvbW1vbnNGb3JtbHlIb29rRm59IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjb25zdCBmaWVsZERlc2NyaXB0b3JFbXB0eUxhYmVsVHlwZSA9ICdfZW1wdHlMYWJlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvciB7XG4gICAgcHJvdGVjdGVkIF9jb25maWc6IEZpZWxkQ29uZmlnID0ge307XG4gICAgcHJvdGVjdGVkIF9mb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybWx5Q29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWx5Q29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29uZmlnKGNvbmZpZzogRmllbGRDb25maWcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZvcm1seUNvbmZpZyhmb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Zvcm1seUNvbmZpZyA9IGZvcm1seUNvbmZpZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdG9KU09OIGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGpzb25PYmogPSB7XG4gICAgICAgICAgICAuLi50aGlzLFxuICAgICAgICAgICAgX2VkaXRvcjogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb25PYmpTdHIgPSBKU09OLnN0cmluZ2lmeShqc29uT2JqKTtcbiAgICAgICAgcmV0dXJuIGpzb25PYmpTdHI7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSA9IHtcbiAgICBmb3JjZVNob3dNZXNzYWdlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ2xhc3NOYW1lVHlwZSA9IHtcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBncmlkPzogc3RyaW5nO1xuICAgIHdyYXBwZXI/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29udHJvbD86IHN0cmluZztcbiAgICBpbnB1dD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsVXNlTW9kZWxCYXNlPzogYm9vbGVhbjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsSW5mb1Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9sYWJlbEluZm9Ub29sdGlwSWNvbj86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oZWxwVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkSGlkZUxhYmVsTWFya2VyID0gZmFsc2U7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGVmYXVsdFZhbHVlPzogRmllbGRWYWx1ZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2dldHRlcj86IEdldHRlckZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NldHRlcj86IChpdGVtOiBFZGl0b3JNb2RlbCwgdmFsdWU6IEZpZWxkVmFsdWUpID0+IHZvaWQ7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueSwgYW55Pj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5FeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5SZXNldE9uSGlkZT86IGJvb2xlYW47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF91cGRhdGVPbjogJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JyA9ICdjaGFuZ2UnO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vbkluaXQ/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uQ2hhbmdlcz86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25EZXN0cm95PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uVmFsdWVDaGFuZ2U/OiAoZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4sIHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkQ2xhc3NOYW1lVHlwZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NpemU6IEZpZWxkU2l6ZUVudW0gPSBGaWVsZFNpemVFbnVtLk5vcm1hbDtcblxuICAgIC8vIGxvY2FsaXphdGlvblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PEZvcm1GaWVsZEV2ZW50PEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbFVzZU1vZGVsQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlbHBUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVscFRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbEluZm9Ub29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsSW5mb1Rvb2x0aXBJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGlkZGVuRXhwcmVzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRkZW5SZXNldE9uSGlkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlblJlc2V0T25IaWRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXBkYXRlT24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVPbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uSW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSW5pdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uQ2hhbmdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uQ2hhbmdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlckNvbnRlbnRJbml0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyVmlld0luaXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvbkRlc3Ryb3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRlc3Ryb3k7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvblZhbHVlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplU21hbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLlNtYWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplTGFyZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLkxhcmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgY29weSgpOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbGFiZWwgZm9yIGZpZWxkLlxuICAgICAqIEBwYXJhbSBsYWJlbCBGdWxsIGxhYmVsIChpMThuIHBhdGggb3Igb3RoZXIgc3RyaW5nKS4gSWYgbnVsbCwgbm8gbGFiZWwgd2lsbCBiZSB1c2VkLlxuICAgICAqIEBwYXJhbSB1c2VNb2RlbEJhc2UgSWYgc2V0IHRvIHRydWUsIGxhYmVsIHdpbGwgYmUgYXBwZW5kZWQgdG8gbW9kZWwncyBpMThuIGJhc2UgcGF0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudWxsLCB1c2VNb2RlbEJhc2U/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlID0gdXNlTW9kZWxCYXNlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVtcHR5TGFiZWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gZmllbGREZXNjcmlwdG9yRW1wdHlMYWJlbFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhlbHBUZXh0KGhlbHBUZXh0OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGVscFRleHQgPSBoZWxwVGV4dDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGFiZWwgdG9vbHRpcCBhbmQgb3B0aW9uYWxseSBhIGN1c3RvbSBpY29uIGZvciB0aGUgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9vbHRpcCAtIFRoZSB0b29sdGlwIHRleHQgdG8gYmUgZGlzcGxheWVkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY3VzdG9tSWNvbl0gLSBBbiBvcHRpb25hbCBjdXN0b20gaWNvbiB0byBiZSB1c2VkIGZvciB0aGUgdG9vbHRpcC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpY29uIGlzIHVzZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhMYWJlbEluZm9Ub29sdGlwKHRvb2x0aXA6IHN0cmluZywgY3VzdG9tSWNvbj86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sYWJlbEluZm9Ub29sdGlwID0gdG9vbHRpcDtcbiAgICAgICAgdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSBjdXN0b21JY29uID8/IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXBJY29uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcXVpcmVkKHJlcXVpcmVkID0gdHJ1ZSwgcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhpZGVMYWJlbE1hcmtlciA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICAgIGlmIChyZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGhpZGVMYWJlbE1hcmtlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUsIGRpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChkaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkRXhwcmVzc2lvbiA9IGRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiwgcmVzZXRPbkhpZGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkV4cHJlc3Npb24gPSBoaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB0aGlzLl9oaWRkZW5SZXNldE9uSGlkZSA9IHJlc2V0T25IaWRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVwZGF0ZU9uKHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU9uID0gdXBkYXRlT247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25Jbml0KG9uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uSW5pdCA9IG9uSW5pdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPbkNoYW5nZXMob25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VzID0gb25DaGFuZ2VzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyQ29udGVudEluaXQoYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyQ29udGVudEluaXQgPSBhZnRlckNvbnRlbnRJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyVmlld0luaXQoYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSBhZnRlclZpZXdJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uRGVzdHJveShvbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25WYWx1ZUNoYW5nZShvblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlID0gb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBGaWVsZFZhbHVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZm4/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2V0dGVyKGZuPzogKGl0ZW06IEVkaXRvck1vZGVsLCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRmllbGRWYWxpZGF0b3I8VmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobmFtZSwgdmFsaWRhdG9yIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiwgbWVzc2FnZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2Lm5hbWUgIT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFzeW5jVmFsaWRhdGlvbjxWYWx1ZSA9IEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yPzogRmllbGRBc3luY1ZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LFxuICAgICAgICBtZXNzYWdlPzogRmllbGRWYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgRWRpdG9yVmFsdWU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihuYW1lLCBhc3luY1ZhbGlkYXRvciBhcyBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LCBtZXNzYWdlKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBc3luY1ZhbGlkYXRpb24obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gbmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbk9wdHModmFsaWRhdGlvbk9wdHM6IEZpZWxkVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25PcHRzID0gdmFsaWRhdGlvbk9wdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKG9wdHM/OiBzdHJpbmcgfCBGaWVsZENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBpY29uIHdpdGggdGV4dCBTaG93IGFsbCB0cmFuc2xhdGlvbnMgYWJvdmUgdGhlIGZpZWxkIGFuZCBhZnRlciBjbGlja2luZyBvbiBpdCwgaXQgZGlzcGxheXMgYSBuZXcgZGlhbG9nIHdpdGggdGFibGV2aWV3LlxuICAgICAqIFRoaXMgbmV3IHRhYmxlIHZpZXcgc2hvd3MgYWxsIGF2YWlsYWJsZSB0cmFuc2xhdGlvbnMgZm9yIHNwZWNpZmljIHByb3BlcnR5IGFuZCBhbGxvd3MgZWRpdGluZyBpdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jYWxpemVkKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0RXZlbnQoXG4gICAgICAgIHR5cGU6IEZvcm1GaWVsZEV2ZW50VHlwZUVudW0sXG4gICAgICAgIGNvbXBvbmVudDogRmllbGRUeXBlPENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgYW55Pj4sXG4gICAgICAgIGRhdGE/OiBGb3JtRmllbGRFdmVudERhdGE8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1N1YmplY3QubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudC5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgZm9ybTogY29tcG9uZW50Py5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGZpZWxkRm9ybUNvbnRyb2w6IGNvbXBvbmVudC5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBjb21wb25lbnQuZmllbGQsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXZlbnRzJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBvYmouX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIG9iai5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgb2JqLl9sYWJlbCA9IHRoaXMuX2xhYmVsO1xuICAgICAgICBvYmouX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcCA9IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXA7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSB0aGlzLl9sYWJlbEluZm9Ub29sdGlwSWNvbjtcbiAgICAgICAgb2JqLl9oZWxwVGV4dCA9IHRoaXMuX2hlbHBUZXh0O1xuICAgICAgICBvYmouX3JlcXVpcmVkID0gdGhpcy5fcmVxdWlyZWQ7XG4gICAgICAgIG9iai5fZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZDtcbiAgICAgICAgb2JqLl9kZWZhdWx0VmFsdWUgPSB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgICAgIG9iai5fcmVxdWlyZWRFeHByZXNzaW9uID0gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlbkV4cHJlc3Npb24gPSB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlblJlc2V0T25IaWRlID0gdGhpcy5faGlkZGVuUmVzZXRPbkhpZGU7XG4gICAgICAgIG9iai5fdXBkYXRlT24gPSB0aGlzLl91cGRhdGVPbjtcbiAgICAgICAgb2JqLl9vbkluaXQgPSB0aGlzLl9vbkluaXQ7XG4gICAgICAgIG9iai5fb25DaGFuZ2VzID0gdGhpcy5fb25DaGFuZ2VzO1xuICAgICAgICBvYmouX29uRGVzdHJveSA9IHRoaXMuX29uRGVzdHJveTtcbiAgICAgICAgb2JqLl9hZnRlckNvbnRlbnRJbml0ID0gdGhpcy5fYWZ0ZXJDb250ZW50SW5pdDtcbiAgICAgICAgb2JqLl9hZnRlclZpZXdJbml0ID0gdGhpcy5fYWZ0ZXJWaWV3SW5pdDtcbiAgICAgICAgb2JqLl9vblZhbHVlQ2hhbmdlID0gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgb2JqLl9kaXNhYmxlZEV4cHJlc3Npb24gPSB0aGlzLl9kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lID8gey4uLnRoaXMuX2NsYXNzTmFtZX0gOiB1bmRlZmluZWQ7XG4gICAgICAgIG9iai5fc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgb2JqLl9nZXR0ZXIgPSB0aGlzLl9nZXR0ZXI7XG4gICAgICAgIG9iai5fc2V0dGVyID0gdGhpcy5fc2V0dGVyO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl9hc3luY1ZhbGlkYXRpb25zID0gdGhpcy5fYXN5bmNWYWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgfVxufVxuIl19","import { StyleLevelEnum } from '@mediusinc/mng-commons/core';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldActionDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._wrappers = ['field'];\n this._fieldActionName = property;\n }\n get button() {\n return this._button;\n }\n get runFunction() {\n return this._runFunction;\n }\n get wrappers() {\n return this._wrappers;\n }\n withButton(label, icon = null, level = StyleLevelEnum.Default) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withWrappers(wrappers) {\n this._wrappers = wrappers;\n return this;\n }\n copy() {\n const field = new FieldActionDescriptor(this._property);\n this.copyFieldsTo(field);\n field._button = { ...this._button, style: { ...this._button?.style } };\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXpELE1BQU0sT0FBTyxxQkFBa0UsU0FBUSxnQkFBNEQ7SUFTL0ksWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIWixjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUkxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXFCLEVBQUUsT0FBc0IsSUFBSSxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTztRQUMvRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNILEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZ0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFxQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmllbGRBY3Rpb25Db250ZXh0LCBGaWVsZEFjdGlvblJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWFjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0gKFxuICAgIGN0eDogRmllbGRBY3Rpb25Db250ZXh0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikgPT4gdm9pZCB8IEZpZWxkQWN0aW9uUmVzdWx0IHwgT2JzZXJ2YWJsZTxGaWVsZEFjdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8dm9pZCwgRWRpdG9yTW9kZWwsIHZvaWQsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZEFjdGlvbk5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3I7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogRmllbGRBY3Rpb25SdW5GblR5cGU8RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJpdmF0ZSBfd3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25OYW1lID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBsZXZlbCA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbk9wdHMoYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXcmFwcGVycyh3cmFwcGVyczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSB3cmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2J1dHRvbiA9IHsuLi50aGlzLl9idXR0b24sIHN0eWxlOiB7Li4udGhpcy5fYnV0dG9uPy5zdHlsZX19O1xuICAgICAgICBmaWVsZC5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbj8uYmluZChmaWVsZCk7XG4gICAgICAgIGZpZWxkLl93cmFwcGVycyA9IFsuLi50aGlzLl93cmFwcGVyc107XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME } from '../models/editor.model';\nimport { FieldGroupTypeEnum } from '../models/field.model';\nimport { AGenericFieldDescriptor } from './field-base.descriptor';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport class AFieldGroupDescriptor extends AGenericFieldDescriptor {\n constructor(name) {\n super();\n this._fields = [];\n this._validations = [];\n this._validationOpts = {};\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n removeField(property, filterFunction) {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n get title() {\n return this._title;\n }\n get validations() {\n return this._validations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get name() {\n return this._name;\n }\n get default() {\n return this._default;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n withTitle(title) {\n this._title = title;\n return this;\n }\n withValidation(name, validator, message, opts) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message, opts));\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withHidden(hiddenExpression) {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n}\nexport class FieldTabGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._fields = [];\n }\n get type() {\n return FieldGroupTypeEnum.Tab;\n }\n get fields() {\n return this._fields;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n copy(skipFields = false) {\n const tab = new FieldTabGroupDescriptor(this.name);\n tab._config = objectDeepCopy(this._config);\n tab._formlyConfig = objectDeepCopy(this._formlyConfig);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n tab._validationOpts = { ...this._validationOpts };\n tab._hiddenExpression = this._hiddenExpression;\n return tab;\n }\n}\nexport class FieldGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._type = FieldGroupTypeEnum.Fieldset;\n if (this._default) {\n this.asLogical();\n }\n }\n get type() {\n return this._type;\n }\n get fields() {\n return this._fields;\n }\n /**\n * Styling class name configurations for group.\n */\n get className() {\n return this._className;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n asLogical() {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n copy(skipFields = false) {\n const group = new FieldGroupDescriptor(this.name);\n group._config = objectDeepCopy(this._config);\n group._formlyConfig = objectDeepCopy(this._formlyConfig);\n group._type = this._type;\n group._title = this._title;\n group._hiddenExpression = this._hiddenExpression;\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n group._validationOpts = { ...this._validationOpts };\n group._className = this._className ? { ...this._className } : undefined;\n return group;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC1ncm91cC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLHVCQUF1QixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQzNHLE9BQU8sRUFBQyx5QkFBeUIsRUFBb0MsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRyxNQUFNLE9BQWdCLHFCQUFrRSxTQUFRLHVCQUF1QjtJQVNuSCxZQUFzQixJQUFZO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBTkYsWUFBTyxHQUE4QixFQUFFLENBQUM7UUFDeEMsaUJBQVksR0FBb0QsRUFBRSxDQUFDO1FBQ25FLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQUtwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyx5QkFBeUIsQ0FBQztJQUN2RCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWdCLEVBQUUsY0FBZ0Y7UUFDakgsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdC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SyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztRQUVsRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV0RSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge29iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUV9IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEJhc2VWYWxpZGF0b3IsIEZvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLXZhbGlkYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEdyb3VwVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0NvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGaWVsZERlc2NyaXB0b3IsIEFHZW5lcmljRmllbGREZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZX0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGV9IGZyb20gJy4vZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbmFtZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmYXVsdDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2ZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICBwcm90ZWN0ZWQgX2hpZGRlbkV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHQgPSBuYW1lID09PSBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJGdW5jdGlvbjogKGZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSkgPT4gQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW10ge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSBmaWx0ZXJGdW5jdGlvbih0aGlzLl9maWVsZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBnZXQgdHlwZSgpOiBGaWVsZEdyb3VwVHlwZUVudW07XG5cbiAgICBhYnN0cmFjdCBnZXQgZmllbGRzKCk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW107XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhpZGRlbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGFkZEZpZWxkKGZpZWxkOiBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvcik6IHRoaXM7XG5cbiAgICBhYnN0cmFjdCBjb3B5KCk6IEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZT86IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWwsIFBhcmVudFZhbHVlID0gUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudFZhbHVlPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50VmFsdWU+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxWYWx1ZSwgVmFsdWUsIFBhcmVudFZhbHVlPihuYW1lLCB2YWxpZGF0b3IgYXMgRmllbGRCYXNlVmFsaWRhdG9yPFZhbHVlLCBWYWx1ZSwgUGFyZW50VmFsdWU+IHwgdW5kZWZpbmVkLCBtZXNzYWdlLCBvcHRzKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZhbGlkYXRpb25PcHRzKHZhbGlkYXRpb25PcHRzOiBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uT3B0cyA9IHZhbGlkYXRpb25PcHRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oaWRkZW5FeHByZXNzaW9uID0gaGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9maWVsZHM6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gRmllbGRHcm91cFR5cGVFbnVtLlRhYjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcyBhcyBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZChmaWVsZDogRmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoc2tpcEZpZWxkcyA9IGZhbHNlKTogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgdGFiID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICB0YWIuX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIHRhYi5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgdGFiLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICB0YWIuX2ZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmID0+IGYuY29weShza2lwRmllbGRzKSk7XG4gICAgICAgIHRhYi5fdmFsaWRhdGlvbnMgPSB0aGlzLnZhbGlkYXRpb25zLm1hcCh2ID0+IHYuY29weSgpKTtcbiAgICAgICAgdGFiLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgICAgIHRhYi5faGlkZGVuRXhwcmVzc2lvbiA9IHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG59XG5cbnR5cGUgRmllbGRHcm91cENsYXNzTmFtZVR5cGUgPSB7XG4gICAgZ3JpZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgIHByaXZhdGUgX3R5cGUgPSBGaWVsZEdyb3VwVHlwZUVudW0uRmllbGRzZXQ7XG5cbiAgICBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkR3JvdXBDbGFzc05hbWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG5hbWUpO1xuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5hc0xvZ2ljYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZHMoKTogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzIGFzIEFycmF5PEFGaWVsZERlc2NyaXB0b3I8YW55LCBFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0eWxpbmcgY2xhc3MgbmFtZSBjb25maWd1cmF0aW9ucyBmb3IgZ3JvdXAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTG9naWNhbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IEZpZWxkR3JvdXBUeXBlRW51bS5Mb2dpY2FsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShvcHRzPzogc3RyaW5nIHwgRmllbGRHcm91cENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KHNraXBGaWVsZHMgPSBmYWxzZSk6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICBncm91cC5fY29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fY29uZmlnKTtcbiAgICAgICAgZ3JvdXAuX2Zvcm1seUNvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2Zvcm1seUNvbmZpZyk7XG4gICAgICAgIGdyb3VwLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZ3JvdXAuX3RpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICAgIGdyb3VwLl9oaWRkZW5FeHByZXNzaW9uID0gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcblxuICAgICAgICBpZiAoIXNraXBGaWVsZHMpIHtcbiAgICAgICAgICAgIGdyb3VwLl9maWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAuX3ZhbGlkYXRpb25zID0gdGhpcy52YWxpZGF0aW9ucy5tYXAodiA9PiB2LmNvcHkoKSk7XG4gICAgICAgIGdyb3VwLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG5cbiAgICAgICAgZ3JvdXAuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZSA/IHsuLi50aGlzLl9jbGFzc05hbWV9IDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG59XG4iXX0=","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, getEnumConstantName } from '@mediusinc/mng-commons/core';\nimport { LookupDataProviderInst } from '@mediusinc/mng-commons/form/api';\nimport { TableSizeEnum } from '@mediusinc/mng-commons/table/api';\nimport { FieldLookupTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldLookupGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldLookupDescriptor extends AFieldDescriptor {\n constructor(property, cfg) {\n super(property);\n this._lookupType = FieldLookupTypeEnum.Dropdown;\n this._optionsLabelTranslate = false;\n this._dropdownClassName = 'mng-filter-lookup-dropdown';\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n else {\n this._dataProvider = new LookupDataProviderInst(cfg?.serviceType);\n }\n this._optionsValueProperty = cfg?.optionsValueProperty;\n }\n get lookupType() {\n return this._lookupType;\n }\n get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n get dropdownClassName() {\n return this._dropdownClassName;\n }\n get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n get customComponentName() {\n return this._customComponentName;\n }\n get trimOption() {\n return this._autocompleteInputTrim;\n }\n withOptionsLabelProperty(property, translate = false) {\n return this.withOptionsLabelPropertyUnsafe(property, translate);\n }\n withOptionsLabelPropertyUnsafe(property, translate = false) {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n withOptionsDisabledProperty(property) {\n return this.withOptionsDisabledPropertyUnsafe(property);\n }\n withOptionsDisabledPropertyUnsafe(property) {\n this._optionsDisabledProperty = property;\n return this;\n }\n withOptionsTrackProperty(property) {\n return this.withOptionsTrackPropertyUnsafe(property);\n }\n withOptionsTrackPropertyUnsafe(property) {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n withLookup(lookup) {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n withInputTrim(trimOption = 'both') {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n withConfig(config) {\n return super.withConfig(config);\n }\n asAutocomplete(opts) {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n asDialog(lookupTableDescriptor, tableDataProvider) {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n // change default sizing\n if (this._dialogTableDescriptor.size == null) {\n this._dialogTableDescriptor.withSize(TableSizeEnum.Normal);\n }\n return this;\n }\n asCustomComponent(customComponentName) {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n copy() {\n const field = new FieldLookupDescriptor(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\nexport class FieldLookupEnumDescriptor extends FieldLookupDescriptor {\n constructor(property, enumModel, options) {\n super(property, {\n dataProvider: new LookupDataProviderInst(undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n get enumModel() {\n return this._enumModel;\n }\n withDisabledOptions(...disabledOptions) {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n withDefaultValueEnum(defaultValue) {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty]);\n }\n }\n return this;\n }\n asAutocomplete(opts) {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n copy() {\n const field = new FieldLookupEnumDescriptor(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbG9va3VwLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQVFILDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ3RCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFnQixzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXRGLE9BQU8sRUFBMEMsYUFBYSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFeEcsT0FBTyxFQUFvQixtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBeUJ6RCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFzQixxQkFBb0UsRUFBRSxFQUFFO0lBQ3RJLE1BQU0sR0FBRyxHQUFxRSxFQUFFLENBQUM7SUFDakYsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLElBQUsscUJBQXVDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUQscUZBQXFGO1lBQ3JGLEdBQUcsQ0FBQyxZQUFZLEdBQUcscUJBQWlFLENBQUM7UUFDekYsQ0FBQzthQUFNLENBQUM7WUFDSixHQUFHLENBQUMsV0FBVyxHQUFHLHFCQUFrRCxDQUFDO1FBQ3pFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8scUJBU1QsU0FBUSxnQkFBd0U7SUF5QmhGLFlBQVksUUFBZ0IsRUFBRSxHQUFtRjtRQUM3RyxLQUFLLENBQUMsUUFBa0IsQ0FBQyxDQUFDO1FBcEJwQixnQkFBVyxHQUF3QixtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFFaEUsMkJB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QUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRWUsY0FBYyxDQUFDLElBQXNDO1FBQ2pFLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDakIsR0FBRyxJQUFJO1lBQ1AsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksSUFBSTtZQUN0QyxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJO1NBQzNDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUkseUJBQXlCLENBQXVDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsS0FBSyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxLQUFLLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQy9ELEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBFbnVtQ29uc3RhbnRUeXBlLFxuICAgIEVudW1WYWx1ZSxcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIElMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgSUxvb2t1cERlc2NyaXB0b3IsXG4gICAgTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlLFxuICAgIFNlcnZpY2VDbGFzc1R5cGUsXG4gICAgZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXksXG4gICAgZnJvbUVudW1WYWx1ZXNBc1ZhbHVlQXJyYXksXG4gICAgZ2V0RW51bUNvbnN0YW50TmFtZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJbnB1dFRyaW1UeXBlLCBMb29rdXBEYXRhUHJvdmlkZXJJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7RW51bURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGVzY3JpcHRvckluc3QsIFRhYmxlU2l6ZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtGaWVsZExvb2t1cENvbmZpZywgRmllbGRMb29rdXBUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZExvb2t1cERlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueT4gPSBGaWVsZExvb2t1cERlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPFxuICAgIEVkaXRvck1vZGVsLFxuICAgIFNlcnZpY2UsXG4gICAgU29ydHMsXG4gICAgRmlsdGVyc1xuPiAmIHtcbiAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMgPSBrZXlvZiBGaWVsZE1vZGVsLCBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgRmllbGRNb2RlbD4gPSB7XG4gICAgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIGRhdGFQcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRMb29rdXBQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUxvb2t1cERhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueT47XG5cbmV4cG9ydCB0eXBlIEZpZWxkTG9va3VwQXV0b2NvbXBsZXRlT3B0c1R5cGUgPSB7XG4gICAgb3Blbk9uRm9jdXM/OiBib29sZWFuO1xuICAgIGlubGluZVNlYXJjaD86IGJvb2xlYW47XG4gICAgc2VsZWN0Rmlyc3Q/OiBib29sZWFuO1xuICAgIGF1dG9DbGVhcj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZmllbGRMb29rdXBHZXRQcm92aWRlckNmZ09iaiA9IDxGaWVsZE1vZGVsLCBTZXJ2aWNlPihzZXJ2aWNlT3JEYXRhUHJvdmlkZXI/OiBGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPikgPT4ge1xuICAgIGNvbnN0IGNmZzogRmllbGRMb29rdXBEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5kYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSUxvb2t1cERhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNmZy5zZXJ2aWNlVHlwZSA9IHNlcnZpY2VPckRhdGFQcm92aWRlciBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRMb29rdXBEZXNjcmlwdG9yPFxuICAgICAgICBGaWVsZE1vZGVsLFxuICAgICAgICBFZGl0b3JNb2RlbCxcbiAgICAgICAgU2VydmljZSA9IGFueSxcbiAgICAgICAgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWwsXG4gICAgICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgICAgICBTb3J0cyA9IGtleW9mIEZpZWxkTW9kZWwsXG4gICAgICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBGaWVsZE1vZGVsXG4gICAgPlxuICAgIGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgaW1wbGVtZW50cyBJTG9va3VwRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz5cbntcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcjogSUxvb2t1cERhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vcHRpb25zVmFsdWVQcm9wZXJ0eT86IHN0cmluZzsgLy8gdGhpcyBkZWZpbmVzIFZUIVxuXG4gICAgcHJvdGVjdGVkIF9sb29rdXBUeXBlOiBGaWVsZExvb2t1cFR5cGVFbnVtID0gRmllbGRMb29rdXBUeXBlRW51bS5Ecm9wZG93bjtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnNMYWJlbFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnNUcmFja1Byb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kcm9wZG93bkNsYXNzTmFtZSA9ICdtbmctZmlsdGVyLWxvb2t1cC1kcm9wZG93bic7XG5cbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaD86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVBdXRvQ2xlYXI/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlU2VsZWN0Rmlyc3Q/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlSW5wdXRUcmltPzogSW5wdXRUcmltVHlwZTtcblxuICAgIHByb3RlY3RlZCBfZGlhbG9nVGFibGVEZXNjcmlwdG9yPzogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT47XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dUYWJsZURhdGFQcm92aWRlcj86IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBhbnksIGFueSwgYW55PjtcblxuICAgIHByb3RlY3RlZCBfY3VzdG9tQ29tcG9uZW50TmFtZT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIGNmZz86IEZpZWxkTG9va3VwRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+KSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5IGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3QoY2ZnPy5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA9IGNmZz8ub3B0aW9uc1ZhbHVlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb29rdXBUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNMYWJlbFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxUcmFuc2xhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNUcmFja1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvY29tcGxldGVPcGVuT25Gb2N1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlQXV0b0NsZWFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlQXV0b0NsZWFyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlU2VsZWN0Rmlyc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVTZWxlY3RGaXJzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRyb3Bkb3duQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dUYWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dUYWJsZURlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dUYWJsZURhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0cmltT3B0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlSW5wdXRUcmltO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0xhYmVsUHJvcGVydHkocHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIHRyYW5zbGF0ZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIHRyYW5zbGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCB0cmFuc2xhdGUgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSB0cmFuc2xhdGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0Rpc2FibGVkUHJvcGVydHkocHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE9wdGlvbnNEaXNhYmxlZFByb3BlcnR5VW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zRGlzYWJsZWRQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29wdGlvbnNEaXNhYmxlZFByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc1RyYWNrUHJvcGVydHkocHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5VW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zVHJhY2tQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXAobG9va3VwPzogTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aExvb2t1cChsb29rdXApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aElucHV0VHJpbSh0cmltT3B0aW9uOiBJbnB1dFRyaW1UeXBlID0gJ2JvdGgnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZUlucHV0VHJpbSA9IHRyaW1PcHRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoQ29uZmlnKGNvbmZpZzogRmllbGRMb29rdXBDb25maWcpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLndpdGhDb25maWcoY29uZmlnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNBdXRvY29tcGxldGUob3B0cz86IEZpZWxkTG9va3VwQXV0b2NvbXBsZXRlT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpZWxkTG9va3VwVHlwZUVudW0uQXV0b2NvbXBsZXRlO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVBdXRvQ2xlYXIgPSBvcHRzPy5hdXRvQ2xlYXI7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZVNlbGVjdEZpcnN0ID0gb3B0cz8uc2VsZWN0Rmlyc3Q7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gb3B0cz8ub3Blbk9uRm9jdXM7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaCA9IG9wdHM/LmlubGluZVNlYXJjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRGlhbG9nPFNvcnRzID0ga2V5b2YgRmllbGRNb2RlbCwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIEZpZWxkTW9kZWw+KFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgICAgICB0YWJsZURhdGFQcm92aWRlcj86IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBhbnksIFNvcnRzLCBGaWx0ZXJzPlxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sb29rdXBUeXBlID0gRmllbGRMb29rdXBUeXBlRW51bS5EaWFsb2c7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvciA9IGxvb2t1cFRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIgPSB0YWJsZURhdGFQcm92aWRlcjtcblxuICAgICAgICAvLyBjaGFuZ2UgZGVmYXVsdCBzaXppbmdcbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvci5zaXplID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvci53aXRoU2l6ZShUYWJsZVNpemVFbnVtLk5vcm1hbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXN0b21Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50TmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFR5cGUgPSBGaWVsZExvb2t1cFR5cGVFbnVtLkN1c3RvbTtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50TmFtZSA9IGN1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPih0aGlzLl9wcm9wZXJ0eSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eTogdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2xvb2t1cFR5cGUgPSB0aGlzLl9sb29rdXBUeXBlO1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IHRoaXMuX29wdGlvbnNMYWJlbFRyYW5zbGF0ZTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNEaXNhYmxlZFByb3BlcnR5ID0gdGhpcy5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zVHJhY2tQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5O1xuICAgICAgICBmaWVsZC5fZHJvcGRvd25DbGFzc05hbWUgPSB0aGlzLl9kcm9wZG93bkNsYXNzTmFtZTtcbiAgICAgICAgZmllbGQuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gdGhpcy5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXM7XG4gICAgICAgIGZpZWxkLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g7XG4gICAgICAgIGZpZWxkLl9kaWFsb2dUYWJsZURlc2NyaXB0b3IgPSB0aGlzLl9kaWFsb2dUYWJsZURlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8XG4gICAgRW51bVZhbHVlLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIHVuZGVmaW5lZCxcbiAgICBFbnVtQ29uc3RhbnRUeXBlLFxuICAgIFBhcmVudEVkaXRvck1vZGVsLFxuICAgIG5ldmVyLFxuICAgIG5ldmVyXG4+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbnVtTW9kZWw6IEVudW1EZXNjcmlwdG9yPEVudW0+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbkVudW1WYWx1ZXM6IEVudW1WYWx1ZVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IEVudW1bXSB8IHVuZGVmaW5lZDsgLy8gdXNlZCB0byBlbnN1cmUgcHJvcGVyIGNvcHlpbmdcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIGVudW1Nb2RlbDogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiBuZXcgTG9va3VwRGF0YVByb3ZpZGVySW5zdDxFbnVtVmFsdWUsIHVuZGVmaW5lZCwgbmV2ZXIsIG5ldmVyLCB1bmRlZmluZWQ+KHVuZGVmaW5lZCksXG4gICAgICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eTogJ3ZhbHVlJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZW51bU1vZGVsID0gZW51bU1vZGVsO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5fb3B0aW9uRW51bVZhbHVlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucylcbiAgICAgICAgICAgID8gZnJvbUVudW1WYWx1ZXNBc1ZhbHVlQXJyYXk8RW51bT4odGhpcy5fZW51bU1vZGVsLnR5cGUsIG9wdGlvbnMsIHRoaXMuX2VudW1Nb2RlbC5uYW1lQXNWYWx1ZSwgdGhpcy5fZW51bU1vZGVsLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXkodGhpcy5fZW51bU1vZGVsLnR5cGUsIHRoaXMuX2VudW1Nb2RlbC5uYW1lQXNWYWx1ZSwgdGhpcy5fZW51bU1vZGVsLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMud2l0aExvb2t1cCgoKSA9PiB0aGlzLl9vcHRpb25FbnVtVmFsdWVzKTtcbiAgICAgICAgdGhpcy53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHkoJ3RpdGxlJywgdGhpcy5fZW51bU1vZGVsLmkxOG5CYXNlS2V5ICE9PSBudWxsKTtcbiAgICAgICAgdGhpcy53aXRoT3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtTW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZE9wdGlvbnMoLi4uZGlzYWJsZWRPcHRpb25zOiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPik6IHRoaXMge1xuICAgICAgICBmb3IgKGNvbnN0IGRpc2FibGVkT3B0aW9uIG9mIGRpc2FibGVkT3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRPcHRpb25WYWx1ZSA9IHRoaXMuX2VudW1Nb2RlbC5uYW1lQXNWYWx1ZSA/IGdldEVudW1Db25zdGFudE5hbWUodGhpcy5fZW51bU1vZGVsLnR5cGUsIGRpc2FibGVkT3B0aW9uKSA6IGRpc2FibGVkT3B0aW9uO1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkT3B0aW9uVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9vcHRpb25FbnVtVmFsdWVzLmZpbmQobyA9PiBvLnZhbHVlID09PSBkaXNhYmxlZE9wdGlvblZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFZhbHVlRW51bShkZWZhdWx0VmFsdWU6IEVudW1Db25zdGFudFR5cGUpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdE9wdGlvblZhbHVlID0gdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlID8gZ2V0RW51bUNvbnN0YW50TmFtZSh0aGlzLl9lbnVtTW9kZWwudHlwZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25WYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fb3B0aW9uRW51bVZhbHVlcy5maW5kKG8gPT4gby52YWx1ZSA9PT0gZGVmYXVsdE9wdGlvblZhbHVlKTtcbiAgICAgICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpdGhEZWZhdWx0VmFsdWUob3B0aW9uW3RoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5IGFzIGtleW9mIG9iamVjdF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhc0F1dG9jb21wbGV0ZShvcHRzPzogRmllbGRMb29rdXBBdXRvY29tcGxldGVPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICBzdXBlci5hc0F1dG9jb21wbGV0ZSh7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgb3Blbk9uRm9jdXM6IG9wdHM/Lm9wZW5PbkZvY3VzID8/IHRydWUsXG4gICAgICAgICAgICBpbmxpbmVTZWFyY2g6IG9wdHM/LmlubGluZVNlYXJjaCA/PyB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4odGhpcy5fcHJvcGVydHksIHRoaXMuX2VudW1Nb2RlbCwgdGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2xvb2t1cFR5cGUgPSB0aGlzLl9sb29rdXBUeXBlO1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNEaXNhYmxlZFByb3BlcnR5ID0gdGhpcy5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zVHJhY2tQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5O1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19","import { TableDataProviderInst, TableSizeEnum } from '@mediusinc/mng-commons/table/api';\nimport { FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldManyToManyGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider;\n }\n else {\n cfg.lookupServiceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldManyToManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, mainTableDescriptor, lookupTableDescriptor, cfg) {\n super(property);\n this._fieldType = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n this._actions = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n this._hasLookupExcludeValues = false;\n this._excludeFilterProperty = '';\n this._excludeValueProperty = '';\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n }\n else {\n this._lookupTableDataProvider = new TableDataProviderInst(cfg?.lookupServiceType);\n }\n // change default sizing if not set\n if (this._mainTableDescriptor.size == null) {\n this._mainTableDescriptor.withSize(TableSizeEnum.Normal);\n }\n if (this._lookupTableDescriptor.size == null) {\n this._lookupTableDescriptor.withSize(TableSizeEnum.Normal);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get actions() {\n return this._actions;\n }\n get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n withLookup(fn) {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n withActions(actions = []) {\n this.actions.push(...actions);\n return this;\n }\n withLookupExclude(filterProperty, valueProperty, hasLookupExclude = true) {\n return this.withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude);\n }\n withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude = true) {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n copy() {\n const field = new FieldManyToManyEditorDescriptor(this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy(), {\n lookupDataProvider: this.lookupTableDataProvider\n });\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\nexport class FieldManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, tableviewDescriptor) {\n super(property);\n this._fieldType = FieldManyEditorTypeEnum.DialogEditor;\n this._fieldActions = [];\n // we allow any action (item is not defined, the same goes for other generics). Developer should define types depending on action's specifics\n this._actions = [];\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n // change default sizing\n if (this._tableviewDescriptor.table.size == null) {\n this._tableviewDescriptor.table.withSize(TableSizeEnum.Normal);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get fieldActions() {\n return this._fieldActions;\n }\n get actions() {\n return this._actions;\n }\n get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n withFieldAction(action) {\n this._fieldActions.push(action);\n return this;\n }\n withFieldActions(actions) {\n this._fieldActions = actions;\n return this;\n }\n withAction(action) {\n this._actions.push(action);\n return this;\n }\n copy() {\n const field = new FieldManyEditorDescriptor(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n field._actions = this._actions.map(a => a.copy());\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFueS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLW1hbnkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9ELHFCQUFxQixFQUF1QixhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUk5SixPQUFPLEVBQUMseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsK0JBQStCLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6SixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQVd6RCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFzQixxQkFBOEUsRUFBRSxFQUFFO0lBQ3BKLE1BQU0sR0FBRyxHQUErRSxFQUFFLENBQUM7SUFDM0YsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLElBQUsscUJBQXVDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUQscUZBQXFGO1lBQ3JGLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxxQkFBZ0UsQ0FBQztRQUM5RixDQUFDO2FBQU0sQ0FBQztZQUNKLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxxQkFBa0QsQ0FBQztRQUMvRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLCtCQUFrSSxTQUFRLGdCQUt0SjtJQVVHLFlBQ0ksUUFBZ0IsRUFDaEIsbUJBQW9ELEVBQ3BELHFCQUFzRCxFQUN0RCxHQUE2RTtRQUU3RSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFaWixlQUFVLEdBQWtDLDZCQUE2QixDQUFDLHNCQUFzQixDQUFDO1FBQ2pHLGFBQVEsR0FBMkMsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUMs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QUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sS0FBSyxHQUFHLElBQUkseUJBQXlCLENBQXlELElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEosSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhUHJvdmlkZXIsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlciwgVGFibGVEYXRhUHJvdmlkZXJHZXRBbGxGblR5cGUsIFRhYmxlRGF0YVByb3ZpZGVySW5zdCwgVGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVTaXplRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRNYW55RWRpdG9yQWN0aW9uRW51bSwgRmllbGRNYW55RWRpdG9yVHlwZUVudW0sIEZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0sIEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT47XG5cbmV4cG9ydCB0eXBlIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIGxvb2t1cFNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICBsb29rdXBEYXRhUHJvdmlkZXI/OiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgY29uc3QgZmllbGRNYW55VG9NYW55R2V0UHJvdmlkZXJDZmdPYmogPSA8RmllbGRNb2RlbCwgU2VydmljZT4oc2VydmljZU9yRGF0YVByb3ZpZGVyPzogRmllbGRNYW55VG9NYW55RWRpdG9yUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+KSA9PiB7XG4gICAgY29uc3QgY2ZnOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5sb29rdXBEYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2ZnLmxvb2t1cFNlcnZpY2VUeXBlID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNmZztcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlID0gYW55LCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPjsgLy8gdGFibGUgZGVzY3JpcHRvciBmb3IgbWFpbiB0YWJsZSBjb21wb25lbnRcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD47IC8vIHRhYmxlIGRlc2NyaXB0b3IgZm9yIHdoZXJlIHNlbGVjdCB3aWxsIGJlIGFwcGxpZWRcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb29rdXBUYWJsZURhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuICAgIHByaXZhdGUgX2ZpZWxkVHlwZTogRmllbGRNYW55VG9NYW55RWRpdG9yVHlwZUVudW0gPSBGaWVsZE1hbnlUb01hbnlFZGl0b3JUeXBlRW51bS5EaWFsb2dUYWJsZU11bHRpc2VsZWN0O1xuICAgIHByaXZhdGUgX2FjdGlvbnM6IEFycmF5PEZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0+ID0gW0ZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0uQWRkLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLkRlbGV0ZV07XG4gICAgcHJpdmF0ZSBfaGFzTG9va3VwRXhjbHVkZVZhbHVlcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSA9ICcnO1xuICAgIHByaXZhdGUgX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBjZmc/OiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICkge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3IgPSBtYWluVGFibGVEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9sb29rdXBUYWJsZURlc2NyaXB0b3IgPSBsb29rdXBUYWJsZURlc2NyaXB0b3I7XG5cbiAgICAgICAgaWYgKGNmZz8ubG9va3VwRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZURhdGFQcm92aWRlciA9IGNmZy5sb29rdXBEYXRhUHJvdmlkZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZURhdGFQcm92aWRlciA9IG5ldyBUYWJsZURhdGFQcm92aWRlckluc3QoY2ZnPy5sb29rdXBTZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGFuZ2UgZGVmYXVsdCBzaXppbmcgaWYgbm90IHNldFxuICAgICAgICBpZiAodGhpcy5fbWFpblRhYmxlRGVzY3JpcHRvci5zaXplID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3Iud2l0aFNpemUoVGFibGVTaXplRW51bS5Ob3JtYWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9sb29rdXBUYWJsZURlc2NyaXB0b3Iuc2l6ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZURlc2NyaXB0b3Iud2l0aFNpemUoVGFibGVTaXplRW51bS5Ob3JtYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZUZpbHRlclByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhjbHVkZUZpbHRlclByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZVZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGNsdWRlVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1haW5UYWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXBUYWJsZURhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cChmbjogVGFibGVEYXRhUHJvdmlkZXJHZXRBbGxGblR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIud2l0aEdldEFsbChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9ucyhhY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKC4uLmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cEV4Y2x1ZGUoZmlsdGVyUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIHZhbHVlUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhMb29rdXBFeGNsdWRlVW5zYWZlKGZpbHRlclByb3BlcnR5IGFzIHN0cmluZywgdmFsdWVQcm9wZXJ0eSBhcyBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwRXhjbHVkZVVuc2FmZShmaWx0ZXJQcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZVByb3BlcnR5OiBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBoYXNMb29rdXBFeGNsdWRlO1xuICAgICAgICB0aGlzLl9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSBmaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHkgPSB2YWx1ZVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4oXG4gICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eSxcbiAgICAgICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3IuY29weSgpLFxuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yLmNvcHkoKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IHRoaXMubG9va3VwVGFibGVEYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gdGhpcy5faGFzTG9va3VwRXhjbHVkZVZhbHVlcztcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSA9IHRoaXMuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nRWRpdG9yO1xuICAgIHByaXZhdGUgX2ZpZWxkQWN0aW9uczogQXJyYXk8RmllbGRNYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXTtcbiAgICAvLyB3ZSBhbGxvdyBhbnkgYWN0aW9uIChpdGVtIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2FtZSBnb2VzIGZvciBvdGhlciBnZW5lcmljcykuIERldmVsb3BlciBzaG91bGQgZGVmaW5lIHR5cGVzIGRlcGVuZGluZyBvbiBhY3Rpb24ncyBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IgPSB0YWJsZXZpZXdEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMucHVzaChGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLlZpZXcsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uQWRkLCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkVkaXQsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uRGVsZXRlKTtcblxuICAgICAgICAvLyBjaGFuZ2UgZGVmYXVsdCBzaXppbmdcbiAgICAgICAgaWYgKHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IudGFibGUuc2l6ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLnRhYmxlLndpdGhTaXplKFRhYmxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRBY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZXZpZXdEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IudGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JDcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmFkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckZvclJlYWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmRldGFpbHNFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JVcGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmVkaXRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWVsZEFjdGlvbihhY3Rpb246IEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWVsZEFjdGlvbnMoYWN0aW9uczogRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bVtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHRoaXMuX3Byb3BlcnR5LCB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmNvcHkoKSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2ZpZWxkVHlwZSA9IHRoaXMuX2ZpZWxkVHlwZTtcbiAgICAgICAgZmllbGQuX2ZpZWxkQWN0aW9ucyA9IHRoaXMuX2ZpZWxkQWN0aW9ucy5tYXAoYSA9PiBhKTtcbiAgICAgICAgZmllbGQuX2FjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcChhID0+IGEuY29weSgpKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cbiJdfQ==","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray } from '@mediusinc/mng-commons/core';\nimport { FieldInputTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldInputDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._fieldType = FieldInputTypeEnum.Text;\n this._numberUseGrouping = true;\n this._currencyDisplay = 'symbol';\n // radio specific properties\n this._radioOptions = [];\n }\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n asType(fieldType, ...args) {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(args[0]);\n case FieldInputTypeEnum.Number:\n return this.asNumber(args[0]);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(args[0]);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(args[0]);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0]);\n case FieldInputTypeEnum.File:\n return this.asFile(args[0]);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(args[0]);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(args[0]);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get rows() {\n return this._rows;\n }\n get numberMin() {\n return this._numberMin;\n }\n get numberMax() {\n return this._numberMax;\n }\n get numberStep() {\n return this._numberStep;\n }\n get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n get numberPrefix() {\n return this._numberPrefix;\n }\n get numberSuffix() {\n return this._numberSuffix;\n }\n get radioOptions() {\n return this._radioOptions;\n }\n get radioLabelClassName() {\n return this._radioLabelClassName;\n }\n get datePickerFormat() {\n return this._datePickerFormat;\n }\n get datePickerMin() {\n return this._datePickerMin;\n }\n get datePickerMax() {\n return this._datePickerMax;\n }\n get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n get maxLength() {\n return this._maxLength;\n }\n get minLength() {\n return this._minLength;\n }\n get pattern() {\n return this._pattern;\n }\n get textTrim() {\n return this._textTrim;\n }\n get emptyValue() {\n return this._emptyValue;\n }\n get validationEmail() {\n return this._validationEmail;\n }\n get mask() {\n return this._mask;\n }\n get slotChar() {\n return this._slotChar;\n }\n get fileMultiple() {\n return this._fileMultiple;\n }\n get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n get fileAccept() {\n return this._fileAccept;\n }\n get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n get imagePreview() {\n return this._imagePreview;\n }\n get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n get customComponentType() {\n return this._customComponentType;\n }\n get customComponentInputs() {\n return this._customComponentInputs;\n }\n get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n get locale() {\n return this._locale;\n }\n get currency() {\n return this._currency;\n }\n get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n get currencyDisplay() {\n return this._currencyDisplay;\n }\n asHidden() {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n asLabel() {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n asText(opts) {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts)\n .withTextValidationEmail(opts?.email ?? false)\n .withTextCommonOpts(opts)\n .withInputCommonOpts(opts);\n }\n asTextarea(opts) {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts).withTextCommonOpts(opts).withInputCommonOpts(opts);\n }\n asNumber(opts) {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withNumberDisplay(opts)\n .withInputCommonOpts(opts);\n }\n asCurrency(opts) {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? opts.currencyProperty : undefined\n }).withInputCommonOpts(opts);\n }\n asCurrencyUnsafe(opts) {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withInputCommonOpts(opts);\n }\n asSwitch() {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n asRadio(options, optionsTitlePath) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => ({ value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}` }));\n return this;\n }\n asRadioFromEnum(enumModel, values) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n asDatePicker(opts) {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n return this.withDateValidation(opts).withDatePickerDisplay(opts).withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n }\n asMask(opts) {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = opts?.mask;\n this._slotChar = opts?.slotChar;\n return this.withInputCommonOpts(opts);\n }\n asFile(opts) {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n asImageFile(opts) {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n asImageUrl(opts) {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n asCustomComponent(component, opts) {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n withNumberValidation(opts) {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n withLocale(locale) {\n this._locale = locale;\n return this;\n }\n withNumberFractions(opts) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n withNumberGrouping(useGrouping = true) {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n withNumberDisplay(opts) {\n this._numberPrefix = opts?.prefix;\n this._numberSuffix = opts?.suffix;\n return this;\n }\n withTextareaRows(rows) {\n this._rows = rows;\n return this;\n }\n withTextValidation(opts) {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n /**\n * Common options for text input element (i.e. value value trimming).\n * @param opts\n */\n withTextCommonOpts(opts) {\n this._textTrim = opts?.trim;\n return this;\n }\n /**\n * Common options for input element (i.e. value on empty input).\n * @param opts\n */\n withInputCommonOpts(opts) {\n this._emptyValue = opts?.emptyValue;\n return this;\n }\n withDatePickerDisplay(opts) {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n withDateValidation(opts) {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n withRadioOptions(opts) {\n this._radioLabelClassName = opts.labelClassName;\n return this;\n }\n withDateValue(opts) {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n withTextValidationEmail(email = true) {\n this._validationEmail = email;\n return this;\n }\n withFileOnSelectHandler(fn) {\n this._fileOnSelectHandler = fn;\n return this;\n }\n copy() {\n const field = new FieldInputDescriptor(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._numberPrefix = this._numberPrefix;\n field._numberSuffix = this._numberSuffix;\n field._radioOptions = [...this._radioOptions];\n field._radioLabelClassName = this._radioLabelClassName;\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._textTrim = this._textTrim;\n field._emptyValue = this._emptyValue;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBbUIsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUt4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQWdJekQsTUFBTSxPQUFPLG9CQUFpSSxTQUFRLGdCQUtySjtJQXFFRyxZQUFZLFFBQWdCO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQXJFWixlQUFVLEdBQXVCLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQVl6RCx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFPMUIscUJBQWdCLEdBQStCLFFBQVEsQ0FBQztRQUdoRSw0QkFBNEI7UUFDcEIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO0lBK0M5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUE2QixFQUFFLEdBQUcsSUFBVztRQUN2RCxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2hCLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO2dCQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixLQUFLLGtCQUFrQixDQUFDLFFBQVE7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEs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QUksQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsS0FBSyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SXRlbU9yT2JzZXJ2YWJsZSwgZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXksIGZyb21FbnVtVmFsdWVzQXNWYWx1ZUFycmF5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbXB0eVZhbHVlVHlwZSwgSW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtGaWVsZEltYWdlUHJldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1jdXN0b20tZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtSYWRpb1ZhbHVlfSBmcm9tICcuLi9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSA9IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBGaWxlIHwgRmlsZVtdO1xuXG50eXBlIEZpZWxkSW5wdXRPcHRzVHlwZSA9IHtcbiAgICBlbXB0eVZhbHVlPzogRW1wdHlWYWx1ZVR5cGU7XG59O1xuXG50eXBlIEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUgPSB7XG4gICAgdHJpbT86IElucHV0VHJpbVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dE9wdHNUeXBlID0ge1xuICAgIGVtYWlsPzogYm9vbGVhbjtcbn0gJiBGaWVsZElucHV0VGV4dFZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1VGV4dEJhc2VPcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSA9IHtcbiAgICByb3dzPzogbnVtYmVyO1xufSAmIEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlICZcbiAgICBGaWVsZElucHVUZXh0QmFzZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUgPSB7XG4gICAgbWFzazogc3RyaW5nO1xuICAgIHNsb3RDaGFyPzogc3RyaW5nO1xufSAmIEZpZWxkSW5wdXRPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dERhdGVQaWNrZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIG1pbj86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBtYXg/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0Q3VycmVuY3lPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7XG4gICAgY3VycmVuY3lQcm9wZXJ0eT86IFByb3BlcnR5O1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xufSAmIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJPcHRzVHlwZSA9IEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBzdGVwPzogbnVtYmVyO1xuICAgIGF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IEZpZWxkSW5wdXREYXRlUGlja2VyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ICZcbiAgICBGaWVsZERhdGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGREYXRlT3B0c1R5cGUgPSB7XG4gICAgYXNEYXRlT2JqPzogYm9vbGVhbjtcbiAgICB1dGM/OiBib29sZWFuO1xuICAgIG5vVGltZT86IGJvb2xlYW47XG4gICAgbm9UaW1lWm9uZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIGFjY2VwdD86IHN0cmluZztcbiAgICBvbkZpbGVTZWxlY3RIYW5kbGVyRm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZTtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgICBwcmV2aWV3QWxsb3dTdmc/OiBib29sZWFuO1xuICAgIHByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRJbWFnZVVybE9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICAgIGlucHV0VmlzaWJsZU9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZpZXdBbGxvd1N2Zz86IGJvb2xlYW47XG4gICAgcHJldmlld0NvbXBvbmVudD86IFR5cGU8RmllbGRJbWFnZVByZXZpZXdDb21wb25lbnQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dENvbXBvbmVudE9wdHMgPSB7XG4gICAgZmllbGRXcmFwcGVycz86IHN0cmluZ1tdO1xuICAgIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSA9IChmaWxlOiBGaWxlW10gfCBudWxsLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPiA9IChcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VmFsdWU+LFxuICAgIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPlxuKSA9PiBJdGVtT3JPYnNlcnZhYmxlPERhdGUgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY2xhc3MgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBGaWVsZElucHV0RGVzY3JpcHRvclR5cGUsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSBfZmllbGRUeXBlOiBGaWVsZElucHV0VHlwZUVudW0gPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcblxuICAgIC8vIHRleHRhcmVhIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9yb3dzPzogbnVtYmVyO1xuXG4gICAgLy8gbnVtYmVyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9udW1iZXJNaW4/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyTWF4PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclN0ZXA/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyQXV0b0NvcnJlY3Q/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX251bWJlck1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlck1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclVzZUdyb3VwaW5nID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbnVtYmVyUHJlZml4Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX251bWJlclN1ZmZpeD86IHN0cmluZztcblxuICAgIC8vIGN1cnJlbmN5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9jdXJyZW5jeT86IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnID0gJ3N5bWJvbCc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyByYWRpbyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfcmFkaW9PcHRpb25zOiBBcnJheTxSYWRpb1ZhbHVlPiA9IFtdO1xuICAgIHByaXZhdGUgX3JhZGlvTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICAvLyBkYXRlcGlja2VyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJNaW4/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlck1heD86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyU2hvd1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJTaG93U2Vjb25kcz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlVXRjPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaj86IGJvb2xlYW47XG5cbiAgICAvLyBpbnB1dCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX21pbkxlbmd0aD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9wYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHByaXZhdGUgX3ZhbGlkYXRpb25FbWFpbD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfdGV4dFRyaW0/OiBJbnB1dFRyaW1UeXBlO1xuXG4gICAgLy8gbWFzayBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWFzaz86IHN0cmluZztcbiAgICBwcml2YXRlIF9zbG90Q2hhcj86IHN0cmluZztcblxuICAgIC8vIGZpbGUgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ZpbGVNdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZmlsZU1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX2ZpbGVBY2NlcHQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsZU9uU2VsZWN0SGFuZGxlcj86IEZpZWxkSW5wdXRGaWxlT25TZWxlY3RIYW5kbGVyRm5UeXBlO1xuXG4gICAgLy8gaW1hZ2Ugc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlldz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfaW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlld0FsbG93U3ZnPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pbWFnZVByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50PjtcblxuICAgIC8vIGN1c3RvbSBjb21wb25lbnQgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPEFGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PjtcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRJbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzPzogc3RyaW5nW107XG5cbiAgICAvLyB2YWx1ZSBjb250cm9sXG4gICAgcHJpdmF0ZSBfZW1wdHlWYWx1ZT86IEVtcHR5VmFsdWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgZmllbGQgdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSBmaWVsZCB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGZpZWxkIChvcHRpb25hbClcbiAgICAgKi9cbiAgICBwdWJsaWMgYXNUeXBlKGZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSGlkZGVuKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0xhYmVsKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1RleHRhcmVhKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTnVtYmVyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXJyZW5jeShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1N3aXRjaCgpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNSYWRpbyhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlUGlja2VyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc01hc2soYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0ltYWdlRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSW1hZ2VVcmwoYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzVGV4dChhcmdzWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdGVwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlckF1dG9Db3JyZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW5GcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlclVzZUdyb3VwaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJQcmVmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdWZmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb09wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb09wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb0xhYmVsQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFkaW9MYWJlbENsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlck1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyTWF4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlck1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93VGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93U2Vjb25kcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZVV0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlTm9UaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluTGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0dGVybigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZXh0VHJpbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRUcmltO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uRW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRW1haWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXNrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzaztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNsb3RDaGFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2xvdENoYXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTXVsdGlwbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTWF4RmlsZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlQWNjZXB0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUFjY2VwdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVPblNlbGVjdEhhbmRsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VVcmxJbnB1dFZpc2libGVPbkRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbWFnZVByZXZpZXdBbGxvd1N2ZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlUHJldmlld0FsbG93U3ZnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3Q29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRJbnB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRXcmFwcGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSGlkZGVuKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNMYWJlbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUZXh0KG9wdHM/OiBGaWVsZElucHV0VGV4dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoVGV4dFZhbGlkYXRpb25FbWFpbChvcHRzPy5lbWFpbCA/PyBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoVGV4dENvbW1vbk9wdHMob3B0cylcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1RleHRhcmVhKG9wdHM/OiBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBvcHRzPy5yb3dzO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cykud2l0aFRleHRDb21tb25PcHRzKG9wdHMpLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE51bWJlckdyb3VwaW5nKG9wdHM/Lmdyb3VwU2VwYXJhdG9yID8/IGZhbHNlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJGcmFjdGlvbnMob3B0cylcbiAgICAgICAgICAgIC53aXRoTnVtYmVyVmFsaWRhdGlvbihvcHRzKVxuICAgICAgICAgICAgLndpdGhMb2NhbGUob3B0cz8ubG9jYWxlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJEaXNwbGF5KG9wdHMpXG4gICAgICAgICAgICAud2l0aElucHV0Q29tbW9uT3B0cyhvcHRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShvcHRzPzogRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoPEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlPntcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBjdXJyZW5jeVByb3BlcnR5OiBvcHRzPy5jdXJyZW5jeVByb3BlcnR5ID8gKG9wdHMuY3VycmVuY3lQcm9wZXJ0eSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSBvcHRzPy5jdXJyZW5jeVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IG9wdHM/LmN1cnJlbmN5ID8/IHRoaXMuX2N1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeURpc3BsYXkgPSBvcHRzPy5jdXJyZW5jeURpc3BsYXkgPz8gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoTnVtYmVyR3JvdXBpbmcob3B0cz8uZ3JvdXBTZXBhcmF0b3IgPz8gZmFsc2UpXG4gICAgICAgICAgICAud2l0aE51bWJlckZyYWN0aW9ucyh7XG4gICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IDIsXG4gICAgICAgICAgICAgICAgbWluRnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDJcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aE51bWJlclZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoTG9jYWxlKG9wdHM/LmxvY2FsZSlcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1N3aXRjaCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW8ob3B0aW9uczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4sIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvO1xuICAgICAgICB0aGlzLl9yYWRpb09wdGlvbnMgPSBvcHRpb25zLm1hcChvID0+IDxSYWRpb1ZhbHVlPnt2YWx1ZTogbywgdGl0bGU6IGAke29wdGlvbnNUaXRsZVBhdGggPyBgJHtvcHRpb25zVGl0bGVQYXRofS5gIDogJyd9JHtvfWB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW9Gcm9tRW51bTxFbnVtPihlbnVtTW9kZWw6IEVudW1EZXNjcmlwdG9yPEVudW0+LCB2YWx1ZXM/OiBBcnJheTxFbnVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW87XG4gICAgICAgIHRoaXMuX3JhZGlvT3B0aW9ucyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPihlbnVtTW9kZWwudHlwZSwgdmFsdWVzLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5KGVudW1Nb2RlbC50eXBlLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlUGlja2VyKG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlck9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhEYXRlVmFsaWRhdGlvbihvcHRzKS53aXRoRGF0ZVBpY2tlckRpc3BsYXkob3B0cykud2l0aERhdGVWYWx1ZSh7XG4gICAgICAgICAgICBhc0RhdGVPYmo6IG9wdHM/LmFzRGF0ZU9iaixcbiAgICAgICAgICAgIHV0Yzogb3B0cz8udXRjLFxuICAgICAgICAgICAgbm9UaW1lWm9uZTogb3B0cz8ubm9UaW1lWm9uZSxcbiAgICAgICAgICAgIG5vVGltZTogb3B0cz8ubm9UaW1lXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc01hc2sob3B0cz86IEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s7XG4gICAgICAgIHRoaXMuX21hc2sgPSBvcHRzPy5tYXNrO1xuICAgICAgICB0aGlzLl9zbG90Q2hhciA9IG9wdHM/LnNsb3RDaGFyO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ZpbGUob3B0cz86IEZpZWxkSW5wdXRGaWxlT3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uRmlsZTtcbiAgICAgICAgdGhpcy5fZmlsZU11bHRpcGxlID0gb3B0cz8ubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZSA9IG9wdHM/Lm1heEZpbGVTaXplO1xuICAgICAgICB0aGlzLl9maWxlQWNjZXB0ID0gb3B0cz8uYWNjZXB0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsZU9uU2VsZWN0SGFuZGxlcihvcHRzPy5vbkZpbGVTZWxlY3RIYW5kbGVyRm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ltYWdlRmlsZShvcHRzPzogRmllbGRJbnB1dEZpbGVPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYXNGaWxlKG9wdHMpO1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VGaWxlO1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXcgPSBvcHRzPy5wcmV2aWV3O1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZyA9IG9wdHM/LnByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50ID0gb3B0cz8ucHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSW1hZ2VVcmwob3B0cz86IEZpZWxkSW5wdXRJbWFnZVVybE9wdHMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsO1xuICAgICAgICB0aGlzLl9maWxlTXVsdGlwbGUgPSBvcHRzPy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3ID0gb3B0cz8ucHJldmlldztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSBvcHRzPy5wcmV2aWV3QWxsb3dTdmc7XG4gICAgICAgIHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IG9wdHM/LnByZXZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gb3B0cz8uaW5wdXRWaXNpYmxlT25EaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4sIG9wdHM/OiBGaWVsZElucHV0Q29tcG9uZW50T3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHMgPSBvcHRzPy5pbnB1dHM7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gb3B0cz8uZmllbGRXcmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclN0ZXAgPSBvcHRzPy5zdGVwO1xuICAgICAgICB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdCA9IG9wdHM/LmF1dG9Db3JyZWN0O1xuICAgICAgICB0aGlzLl9udW1iZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX251bWJlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2NhbGUobG9jYWxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMob3B0cz86IEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlKSB7XG4gICAgICAgIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyRGlzcGxheShvcHRzPzogRmllbGRJbnB1dE51bWJlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9udW1iZXJQcmVmaXggPSBvcHRzPy5wcmVmaXg7XG4gICAgICAgIHRoaXMuX251bWJlclN1ZmZpeCA9IG9wdHM/LnN1ZmZpeDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0YXJlYVJvd3Mocm93cz86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9yb3dzID0gcm93cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0VmFsaWRhdGlvbihvcHRzPzogRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbWluTGVuZ3RoID0gb3B0cz8ubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXhMZW5ndGggPSBvcHRzPy5tYXhMZW5ndGg7XG4gICAgICAgIHRoaXMuX3BhdHRlcm4gPSBvcHRzPy5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgdGV4dCBpbnB1dCBlbGVtZW50IChpLmUuIHZhbHVlIHZhbHVlIHRyaW1taW5nKS5cbiAgICAgKiBAcGFyYW0gb3B0c1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGV4dENvbW1vbk9wdHMob3B0cz86IEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGV4dFRyaW0gPSBvcHRzPy50cmltO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgaW5wdXQgZWxlbWVudCAoaS5lLiB2YWx1ZSBvbiBlbXB0eSBpbnB1dCkuXG4gICAgICogQHBhcmFtIG9wdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aElucHV0Q29tbW9uT3B0cyhvcHRzPzogRmllbGRJbnB1dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VtcHR5VmFsdWUgPSBvcHRzPy5lbXB0eVZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVQaWNrZXJEaXNwbGF5KG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRm9ybWF0ID0gb3B0cz8uZm9ybWF0O1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWUgPSBvcHRzPy5zaG93VGltZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gb3B0cz8uc2hvd1NlY29uZHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0ZVZhbGlkYXRpb24ob3B0cz86IEZpZWxkSW5wdXREYXRlVmFsaWRhdGlvbk9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1pbiA9IG9wdHM/Lm1pbjtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSYWRpb09wdGlvbnMob3B0czoge2xhYmVsQ2xhc3NOYW1lPzogc3RyaW5nfSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lID0gb3B0cy5sYWJlbENsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUob3B0cz86IEZpZWxkRGF0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaiA9IG9wdHM/LmFzRGF0ZU9iajtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjID0gb3B0cz8udXRjO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lID0gb3B0cz8ubm9UaW1lWm9uZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lID0gb3B0cz8ubm9UaW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRleHRWYWxpZGF0aW9uRW1haWwoZW1haWwgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25FbWFpbCA9IGVtYWlsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbGVPblNlbGVjdEhhbmRsZXIoZm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fcm93cyA9IHRoaXMuX3Jvd3M7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW4gPSB0aGlzLl9udW1iZXJNaW47XG4gICAgICAgIGZpZWxkLl9udW1iZXJNYXggPSB0aGlzLl9udW1iZXJNYXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdGVwID0gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICAgICAgZmllbGQuX251bWJlckF1dG9Db3JyZWN0ID0gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyA9IHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZmllbGQuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGZpZWxkLl9udW1iZXJQcmVmaXggPSB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdWZmaXggPSB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgICAgIGZpZWxkLl9yYWRpb09wdGlvbnMgPSBbLi4udGhpcy5fcmFkaW9PcHRpb25zXTtcbiAgICAgICAgZmllbGQuX3JhZGlvTGFiZWxDbGFzc05hbWUgPSB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlckZvcm1hdCA9IHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyTWluID0gdGhpcy5fZGF0ZVBpY2tlck1pbjtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJNYXggPSB0aGlzLl9kYXRlUGlja2VyTWF4O1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dUaW1lID0gdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlVXRjID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVOb1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmogPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmo7XG4gICAgICAgIGZpZWxkLl9tYXhMZW5ndGggPSB0aGlzLl9tYXhMZW5ndGg7XG4gICAgICAgIGZpZWxkLl9taW5MZW5ndGggPSB0aGlzLl9taW5MZW5ndGg7XG4gICAgICAgIGZpZWxkLl9wYXR0ZXJuID0gdGhpcy5fcGF0dGVybjtcbiAgICAgICAgZmllbGQuX21hc2sgPSB0aGlzLl9tYXNrO1xuICAgICAgICBmaWVsZC5fc2xvdENoYXIgPSB0aGlzLl9zbG90Q2hhcjtcbiAgICAgICAgZmllbGQuX2ZpbGVNdWx0aXBsZSA9IHRoaXMuX2ZpbGVNdWx0aXBsZTtcbiAgICAgICAgZmllbGQuX2ZpbGVNYXhGaWxlU2l6ZSA9IHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZTtcbiAgICAgICAgZmllbGQuX2ZpbGVBY2NlcHQgPSB0aGlzLl9maWxlQWNjZXB0O1xuICAgICAgICBmaWVsZC5fZmlsZU9uU2VsZWN0SGFuZGxlciA9IHRoaXMuX2ZpbGVPblNlbGVjdEhhbmRsZXI7XG4gICAgICAgIGZpZWxkLl9pbWFnZVByZXZpZXcgPSB0aGlzLl9pbWFnZVByZXZpZXc7XG4gICAgICAgIGZpZWxkLl9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZCA9IHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkO1xuICAgICAgICBmaWVsZC5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgZmllbGQuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50SW5wdXRzID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SW5wdXRzO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMgPSB0aGlzLl9jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICAgICAgZmllbGQuX2xvY2FsZSA9IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgZmllbGQuX2N1cnJlbmN5ID0gdGhpcy5fY3VycmVuY3k7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fdGV4dFRyaW0gPSB0aGlzLl90ZXh0VHJpbTtcbiAgICAgICAgZmllbGQuX2VtcHR5VmFsdWUgPSB0aGlzLl9lbXB0eVZhbHVlO1xuICAgICAgICBmaWVsZC5fdmFsaWRhdGlvbkVtYWlsID0gdGhpcy5fdmFsaWRhdGlvbkVtYWlsO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum } from '../models/editor.model';\nimport { FieldActionDescriptor } from './field-action.descriptor';\nimport { AFieldDescriptor } from './field-base.descriptor';\nimport { FieldGroupDescriptor, FieldTabGroupDescriptor } from './field-group.descriptor';\nimport { FieldLookupDescriptor, FieldLookupEnumDescriptor, fieldLookupGetProviderCfgObj } from './field-lookup.descriptor';\nimport { FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj } from './field-many.descriptor';\nimport { FieldInputDescriptor } from './field.descriptor';\nimport { EditorDescriptorNestedObjectWrapper } from './wrappers/editor-descriptor-nested-object-wrapper';\nexport class EditorDescriptorInst {\n static { this.defaultGroupName = EDITOR_DEFAULT_GROUP_NAME; }\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n constructor(model, tableviewEditorType = TableviewEditorTypeEnum.None) {\n /** @ignore */ this._tabs = [];\n /** @ignore */ this._groups = [];\n /** @ignore */ this._fields = [];\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n /**\n * Model descriptor for editor.\n */\n get model() {\n return this._model;\n }\n /**\n * Editor's tabs.\n */\n get tabs() {\n return this._tabs;\n }\n /**\n * Editor's fields.\n */\n get fields() {\n return this._fields;\n }\n /**\n * Type of editor for tableview.\n */\n get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n /**\n * If editor is disabled.\n */\n get disabled() {\n return this._disabled;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n get localizationModel() {\n return this._localizationModel;\n }\n get autoSave() {\n return this._autoSave;\n }\n get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n get autofocusOnField() {\n return this._autofocusOnField;\n }\n /**\n * Dives into nested object to add fields from the nested object on property.\n *\n * @experimental\n *\n * @param property Model property name.\n */\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this, property);\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n * @return Newly created group descriptor.\n */\n addTabGroup(name, title) {\n const tabGroup = new FieldTabGroupDescriptor(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n */\n withTabGroup(name, title) {\n this.addTabGroup(name, title);\n return this;\n }\n /**\n * Gets group by its name (key).\n * @param name Group's key.\n */\n getGroup(name) {\n return typeof name === 'string' ? (this._groups.find(g => g.name === name) ?? null) : (this._groups[name] ?? null);\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n * @return Newly created group descriptor.\n */\n addFieldGroup(name, title) {\n const fieldGroup = new FieldGroupDescriptor(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n withFieldGroup(name, title) {\n this.addFieldGroup(name, title);\n return this;\n }\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n getField(property) {\n return this.getFieldUnsafe(property);\n }\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n getFieldUnsafe(property) {\n return this._fields.find(f => f.property === property) ?? null;\n }\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n removeField(property) {\n return this.removeFieldUnsafe(property);\n }\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n removeFieldUnsafe(property) {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, { name: 'EditorDescriptorError' });\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n addFieldDescriptor(field) {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n addFieldUnsafe(property) {\n const field = new FieldInputDescriptor(property);\n this.addFieldDescriptor(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = new FieldActionDescriptor(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = new FieldLookupDescriptor(property, {\n ...(opts?.serviceProvider ? fieldLookupGetProviderCfgObj(opts.serviceProvider) : {})\n });\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = new FieldLookupEnumDescriptor(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = new FieldManyEditorDescriptor(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor(property, mainTableDescriptor, lookupTableDescriptor, {\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Disables field on editor.\n * @param disabled\n */\n withDisabled(disabled = true) {\n this._disabled = disabled;\n return this;\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidation(name, validator, message, opts) {\n return this.withValidationUnsafe(name, validator, message, opts);\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidationUnsafe(name, validator, message, opts) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n withAutoSave(enabled = true, autoSaveIdentifier) {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n withAutofocusOnField(enabled = true) {\n this._autofocusOnField = enabled;\n return this;\n }\n /**\n * Creates a copy of editor descriptor object.\n */\n copy() {\n const editor = new EditorDescriptorInst(this.model.copy(), this.tableviewEditorType);\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map());\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._autofocusOnField = this._autofocusOnField;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n return editor;\n }\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n createFieldGroupDescriptor(fieldGroup) {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n createTabGroupDescriptor(tabGroup) {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n /**\n * Creates default field group.\n * @internal\n */\n createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.addFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n /**\n * Creates default tab group.\n * @internal\n */\n createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.addTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._localizationLocalizationProperty = property;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty;\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQWdCLG9CQUFvQixFQUFzQyxNQUFNLDZCQUE2QixDQUFDO0FBTXJILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSTFGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3pILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXJJLE9BQU8sRUFBQyxvQkFBb0IsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RyxNQUFNLE9BQU8sb0JBQW9CO2FBR04scUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBd0JwRTs7OztPQUlHO0lBQ0gsWUFBbUIsS0FBbUMsRUFBRSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJO1FBekIxRyxjQUFjLENBQW9CLFVBQUssR0FBZ0QsRUFBRSxDQUFDO1FBQzFGLGNBQWMsQ0FBb0IsWUFBTyxHQUFnRSxFQUFFLENBQUM7UUFDNUcs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QUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUNaLFFBQWtCLEVBQ2xCLEtBQXlDLEVBQ3pDLGNBQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFrQixFQUFFLEtBQUssRUFBRSxjQUF3QixDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLGVBQWUsQ0FBbUIsUUFBZ0IsRUFBRSxLQUF3QyxFQUFFLGNBQXNCO1FBQ3ZILElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxRQUFrQixDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLGNBQXdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUF1QixFQUFFLFNBQXlDLEVBQUUsSUFBaUM7UUFDbEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLElBQUk7WUFDVixhQUFhLEVBQUUsU0FBUztZQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQWlCO1lBQ2pDLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBcnJheUl0ZW1UeXBlLCBDb21tb25zSW50ZXJuYWxFcnJvciwgRW51bUNvbnN0YW50VHlwZSwgSUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzLCBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUUsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7Rm9ybVZhbGlkYXRpb25NZXNzYWdlLCBGb3JtVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0Zvcm1FdmVudCwgRm9ybUV2ZW50RGF0YSwgRm9ybUV2ZW50VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5pbXBvcnQge0lGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWFjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZEdyb3VwRGVzY3JpcHRvciwgRmllbGRUYWJHcm91cERlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtZ3JvdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwRGVzY3JpcHRvciwgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvciwgZmllbGRMb29rdXBHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsIGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZX0gZnJvbSAnLi9maWVsZC12YWxpZGF0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZElucHV0RGVzY3JpcHRvciwgRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlfSBmcm9tICcuL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcn0gZnJvbSAnLi93cmFwcGVycy9lZGl0b3ItZGVzY3JpcHRvci1uZXN0ZWQtb2JqZWN0LXdyYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+XG57XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBkZWZhdWx0R3JvdXBOYW1lID0gRURJVE9SX0RFRkFVTFRfR1JPVVBfTkFNRTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZXZpZXdFZGl0b3JUeXBlOiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYnM6IEFycmF5PEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2dyb3VwczogQXJyYXk8RmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2ZpZWxkczogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRUYWJHcm91cD86IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRHcm91cD86IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmU/OiBib29sZWFuO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmVJZGVudGlmaWVyPzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hdXRvZm9jdXNPbkZpZWxkPzogYm9vbGVhbjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8YW55PjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF9ldmVudHNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Rm9ybUV2ZW50PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBvZiBlZGl0b3IgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RWRpdG9yVHlwZSBUeXBlIG9mIGVkaXRvciBpbiB0YWJsZXZpZXcgKGFkZCwgZWRpdCwgdmlldyBvciBub25lKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sIHRhYmxldmlld0VkaXRvclR5cGUgPSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5Ob25lKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGUgPSB0YWJsZXZpZXdFZGl0b3JUeXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vZGVsIGRlc2NyaXB0b3IgZm9yIGVkaXRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdG9yJ3MgdGFicy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRhYnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVkaXRvcidzIGZpZWxkcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUeXBlIG9mIGVkaXRvciBmb3IgdGFibGV2aWV3LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3RWRpdG9yVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgZWRpdG9yIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbk1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvU2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9TYXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b1NhdmVJZGVudGlmaWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b1NhdmVJZGVudGlmaWVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2ZvY3VzT25GaWVsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGl2ZXMgaW50byBuZXN0ZWQgb2JqZWN0IHRvIGFkZCBmaWVsZHMgZnJvbSB0aGUgbmVzdGVkIG9iamVjdCBvbiBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PiB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXIodGhpcywgcHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyB0YWIgZ3JvdXAuIE5leHQgYWRkZWQgZmllbGRzIGFyZSBhZGRlZCB0byBuZXdseSBjcmVhdGVkIHRhYiBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgdGFiLjdAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKiBAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYkdyb3VwID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgdGFiR3JvdXAud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXApO1xuICAgICAgICByZXR1cm4gdGFiR3JvdXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBuZXcgdGFiIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCB0YWIgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIHRhYi43QHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGdyb3VwIGJ5IGl0cyBuYW1lIChrZXkpLlxuICAgICAqIEBwYXJhbSBuYW1lIEdyb3VwJ3Mga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHcm91cChuYW1lOiBzdHJpbmcgfCBudW1iZXIpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyA/ICh0aGlzLl9ncm91cHMuZmluZChnID0+IGcubmFtZSA9PT0gbmFtZSkgPz8gbnVsbCkgOiAodGhpcy5fZ3JvdXBzW25hbWVdID8/IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IGZpZWxkIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCBmaWVsZCBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgZ3JvdXAuXG4gICAgICogQHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZEdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgZmllbGRHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gZmllbGRHcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBmaWVsZCBncm91cC4gTmV4dCBhZGRlZCBmaWVsZHMgYXJlIGFkZGVkIHRvIG5ld2x5IGNyZWF0ZWQgZmllbGQgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIGdyb3VwLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgRWRpdG9yTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5fZmllbGRzLmZpbmRJbmRleChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWVsZCAke3Byb3BlcnR5fSBkb2VzIG5vdCBleGlzdC5gLCB7bmFtZTogJ0VkaXRvckRlc2NyaXB0b3JFcnJvcid9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2dyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZElkeCA9IGdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiBmIGluc3RhbmNlb2YgQUZpZWxkRGVzY3JpcHRvciAmJiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBGaWVsZElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZmllbGRzLnNwbGljZShncm91cEZpZWxkSWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKGZpZWxkSWR4LCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGZpZWxkIGJ5IHRoZSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZCBGaWVsZCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5zb21lKGYgPT4gZi5wcm9wZXJ0eSA9PT0gZmllbGQucHJvcGVydHkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpZWxkICcke2ZpZWxkLnByb3BlcnR5fScgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0R3JvdXAoKTtcbiAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXA/LmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBmaWVsZCBieSB0aGUgbW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUgKFVOU0FGRSkuIFByb3BlcnR5IGlzIG5vdCBjaGVja2VkIG9uIGVkaXRvciBtb2RlbC5cbiAgICAgKiBVc2Uge2FkZEZpZWxkfSBmb3Igc2FmZSB1c2FnZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBFZGl0b3JNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZEZpZWxkKHApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZyk6IEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4oYWN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBMb29rdXBNb2RlbCBleHRlbmRzIE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4gPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldXG4gICAgPihwcm9wZXJ0eTogUHJvcGVydHksIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG9wdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFtVTlNBRkVdIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzPExvb2t1cE1vZGVsLCBTZXJ2aWNlPn0gb3B0cyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgY29uZmlndXJpbmcgdHlwZSBhbmQvb3Igc2VydmljZSBwcm92aWRlci5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGZpZWxkTG9va3VwR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHkgYXMgc3RyaW5nLCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBlbnVtIGxvb2t1cCBmaWVsZC5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwncyBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBlbnVtRGVzYyBUeXBlIG9mIGVudW0gb3IgZW51bSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFByb3ZpZGVzIHN1YnNldCBvZiBlbnVtJ3MgYXZhaWxhYmxlIGNvbnN0YW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0gPSBFbnVtQ29uc3RhbnRUeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMgKFVOU0FGRSkuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgY2ZnID0gZmllbGRNYW55VG9NYW55R2V0UHJvdmlkZXJDZmdPYmoobG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZVR5cGUsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgZmllbGQgb24gZWRpdG9yLlxuICAgICAqIEBwYXJhbSBkaXNhYmxlZFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRGlzYWJsZWQoZGlzYWJsZWQgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZ3JvdXAgdmFsaWRhdG9yIHRvIGVkaXRvci5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxpZGF0b3IgRmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIEZpZWxkIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0cyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlPGtleW9mIEVkaXRvck1vZGVsPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVmFsaWRhdGlvblVuc2FmZShuYW1lLCB2YWxpZGF0b3IsIG1lc3NhZ2UsIG9wdHMgYXMgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGdyb3VwIHZhbGlkYXRvciB0byBlZGl0b3IuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdmFsaWRhdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIEZpZWxkIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBGaWVsZCB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdHMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IEVkaXRvck1vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0b3I/OiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXAud2l0aFZhbGlkYXRpb24obmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEF1dG9TYXZlKGVuYWJsZWQgPSB0cnVlLCBhdXRvU2F2ZUlkZW50aWZpZXI/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYXV0b1NhdmUgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSBhdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQXV0b2ZvY3VzT25GaWVsZChlbmFibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hdXRvZm9jdXNPbkZpZWxkID0gZW5hYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgZWRpdG9yIGRlc2NyaXB0b3Igb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3B5KCk6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLm1vZGVsLmNvcHkoKSwgdGhpcy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcblxuICAgICAgICBlZGl0b3IuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIGNvbnN0IGZpZWxkc01hcCA9IGVkaXRvci5maWVsZHMucmVkdWNlKChtYXAsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBtYXAuc2V0KGZpZWxkLnByb3BlcnR5LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkdyb3VwQ29weSA9IHRhYkdyb3VwLmNvcHkodHJ1ZSk7XG4gICAgICAgICAgICAvLyBzZXQgZmllbGRzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkdyb3VwLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGFiR3JvdXAuZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29weSA9IHRhYkdyb3VwQ29weS5maWVsZHNbaV07XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyb3VwLmZpZWxkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvcHkgPSBmaWVsZHNNYXAuZ2V0KGdyb3VwLmZpZWxkc1tqXS5wcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmllbGRDb3B5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvdWxkIG5vdCBjb3B5IGVkaXRvciBkZXNjcmlwdG9yOiBmaWVsZCAnJHtncm91cC5maWVsZHNbal0ucHJvcGVydHl9JyAodGFiICcke3RhYkdyb3VwLm5hbWV9JywgZ3JvdXAgJHtncm91cC5uYW1lfScpLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQ29weS5hZGRGaWVsZChmaWVsZENvcHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZGl0b3IuX2dyb3Vwcy5wdXNoKGdyb3VwQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlZGl0b3IuX3RhYnMucHVzaCh0YWJHcm91cENvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAgPSBlZGl0b3IuX3RhYnMubGVuZ3RoID4gMCA/IGVkaXRvci5fdGFic1tlZGl0b3IuX3RhYnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlZGl0b3IuX2N1cnJlbnRUYWJHcm91cCkge1xuICAgICAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoID4gMCA/IGVkaXRvci5fY3VycmVudFRhYkdyb3VwLmZpZWxkc1tlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIGVkaXRvci5fYXV0b1NhdmUgPSB0aGlzLl9hdXRvU2F2ZTtcbiAgICAgICAgZWRpdG9yLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIGVkaXRvci5fYXV0b2ZvY3VzT25GaWVsZCA9IHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgICAgIGVkaXRvci5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgZWRpdG9yLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgICAgICBlZGl0b3IuX2xvY2FsaXphdGlvbk1vZGVsID0gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgICAgIGVkaXRvci5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcblxuICAgICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZWQgZ3JvdXAgZnJvbSBmaWVsZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZEdyb3VwIEZpZWxkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0VGFiR3JvdXAoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gZmllbGRHcm91cDtcbiAgICAgICAgdGhpcy5fZ3JvdXBzLnB1c2goZmllbGRHcm91cCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWJHcm91cD8uYWRkRmllbGQoZmllbGRHcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGFiIGdyb3VwIGZyb20gdGFiIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQHBhcmFtIHRhYkdyb3VwIFRhYiBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXA6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXAgPSB0YWJHcm91cDtcbiAgICAgICAgdGhpcy5fdGFicy5wdXNoKHRhYkdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBkZWZhdWx0IGZpZWxkIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdEdyb3VwKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRUYWJHcm91cCgpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYkdyb3VwPy5maWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEZpZWxkR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGRlZmF1bHQgdGFiIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCkge1xuICAgICAgICBpZiAodGhpcy5fdGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGFiR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgJ2dlbmVyYWwuZ2VuZXJhbCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIGRpc3BsYXlpbmcgY29ycmVjdC9sb2NhbGl6ZWQgZGF0YSBpbiB0aGUgZWRpdG9yXG4gICAgICogQHBhcmFtIHByb3BlcnR5IHByb3BlcnR5IHRoYXQgdGVsbHMgdXMgd2hlcmUgb24gdGhlIG1vZGVsIGFyZSBsb2NhbGl6YXRpb25zIGFjY2Vzc2libGVcbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZm9yIGxvY2FsaXphdGlvbnNcbiAgICAgKiBAcGFyYW0gbG9jYWxlUHJvcGVydHkgcHJvcGVydHkgYnkgd2hpY2ggd2UgZmluZCB0aGUgbG9jYWxlXG4gICAgICovXG4gICAgcHVibGljIGxvY2FsaXplZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBMb2NhbGl6YXRpb25Nb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxMb2NhbGl6YXRpb25Nb2RlbD4sXG4gICAgICAgIGxvY2FsZVByb3BlcnR5OiBrZXlvZiBMb2NhbGl6YXRpb25Nb2RlbFxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBtb2RlbCwgbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkVW5zYWZlPExvY2FsaXphdGlvblR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uVHlwZT4sIGxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSBwcm9wZXJ0eSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbk1vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRFdmVudCh0eXBlOiBGb3JtRXZlbnRUeXBlRW51bSwgY29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxhbnksIGFueT4sIGRhdGE/OiBGb3JtRXZlbnREYXRhPEVkaXRvck1vZGVsPikge1xuICAgICAgICB0aGlzLl9ldmVudHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm06IGNvbXBvbmVudC5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBldmVudHMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG59XG4iXX0=","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { EditorDescriptorInst } from './editor.descriptor';\nexport function editorDescriptor(modelOrOpts, opts) {\n if (modelOrOpts == null) {\n return new EditorDescriptorInst(model(), opts?.tableviewEditorType);\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst(modelOrOpts, opts?.tableviewEditorType);\n }\n else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst(model(modelOrOpts), modelOrOpts?.tableviewEditorType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRy9HLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBZ0J6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLFdBQTJHLEVBQzNHLElBQXFFO0lBRXJFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxFQUFlLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDckgsQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsV0FBVyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7U0FBTSxDQUFDO1FBQ0osNkRBQTZEO1FBQzdELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxDQUFjLFdBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHMsIFR5cGVEZXNjcmlwdG9yLCBtb2RlbH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7VGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9lZGl0b3IuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIHRhYmxldmlld0VkaXRvclR5cGU/OiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICBwYXJlbnRFZGl0b3JUeXBlPzogVHlwZURlc2NyaXB0b3I8UGFyZW50RWRpdG9yTW9kZWw+IHwgTW9kZWxEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPiB8IEVkaXRvckRlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnk+O1xufTtcbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0gTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxFZGl0b3JNb2RlbD4gJiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlQmFzZU9wdHNUeXBlPFBhcmVudEVkaXRvck1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPigpOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBvcHRzOiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sXG4gICAgb3B0cz86IEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+XG4pOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbE9yT3B0cz86IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICBvcHRzPzogRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikge1xuICAgIGlmIChtb2RlbE9yT3B0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbDxFZGl0b3JNb2RlbD4oKSwgb3B0cz8udGFibGV2aWV3RWRpdG9yVHlwZSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4obW9kZWxPck9wdHMsIG9wdHM/LnRhYmxldmlld0VkaXRvclR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgY291bGQgaGF2ZSBhdXRvR2VuZXJhdGVkIGlmIG1vZGVsIGRlc2NyaXB0b3IgaXMgY2xhc3NcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG1vZGVsPEVkaXRvck1vZGVsPihtb2RlbE9yT3B0cyksIG1vZGVsT3JPcHRzPy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcbiAgICB9XG59XG4iXX0=","export var FormFieldEventTypeEnum;\n(function (FormFieldEventTypeEnum) {\n FormFieldEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormFieldEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormFieldEventTypeEnum[\"DataProvider\"] = \"DataProvider\";\n FormFieldEventTypeEnum[\"DialogLifecycle\"] = \"DialogLifecycle\";\n FormFieldEventTypeEnum[\"RowReorder\"] = \"RowReorder\";\n FormFieldEventTypeEnum[\"Other\"] = \"Other\";\n})(FormFieldEventTypeEnum || (FormFieldEventTypeEnum = {}));\nexport var FormEventTypeEnum;\n(function (FormEventTypeEnum) {\n FormEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormEventTypeEnum[\"Submit\"] = \"Submit\";\n FormEventTypeEnum[\"Other\"] = \"Other\";\n})(FormEventTypeEnum || (FormEventTypeEnum = {}));\nexport class FormFieldEventComponentSubtype {\n static { this.ON_INIT = 'Component.OnInit'; }\n static { this.ON_VIEW_INIT = 'Component.OnViewInit'; }\n static { this.ON_CONTENT_INIT = 'Component.OnContentInit'; }\n static { this.ON_DESTROY = 'Component.OnDestroy'; }\n}\nexport class FormFieldEventDialogSubtype {\n static { this.VISIBILITY = 'Dialog.Visibility'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBTixJQUFZLHNCQU9YO0FBUEQsV0FBWSxzQkFBc0I7SUFDOUIsbUVBQXlDLENBQUE7SUFDekMscURBQTJCLENBQUE7SUFDM0IsdURBQTZCLENBQUE7SUFDN0IsNkRBQW1DLENBQUE7SUFDbkMsbURBQXlCLENBQUE7SUFDekIseUNBQWUsQ0FBQTtBQUNuQixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQztBQUVELE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDekIsOERBQXlDLENBQUE7SUFDekMsZ0RBQTJCLENBQUE7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsb0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QjtBQUVELE1BQU0sT0FBTyw4QkFBOEI7YUFDaEIsWUFBTyxHQUFHLGtCQUFrQixDQUFDO2FBQzdCLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7YUFDdEMsb0JBQWUsR0FBRyx5QkFBeUIsQ0FBQzthQUM1QyxlQUFVLEdBQUcscUJBQXFCLENBQUM7O0FBRzlELE1BQU0sT0FBTywyQkFBMkI7YUFDYixlQUFVLEdBQUcsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7SUZvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4vZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVkaXRvclN1Ym1pdEV2ZW50PEl0ZW0+IHtcbiAgICBmb3JtSXRlbTogSXRlbTtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBGb3JtRmllbGRFdmVudFR5cGVFbnVtIHtcbiAgICBDb21wb25lbnRMaWZlY3ljbGUgPSAnQ29tcG9uZW50TGlmZWN5Y2xlJyxcbiAgICBWYWx1ZUNoYW5nZSA9ICdWYWx1ZUNoYW5nZScsXG4gICAgRGF0YVByb3ZpZGVyID0gJ0RhdGFQcm92aWRlcicsXG4gICAgRGlhbG9nTGlmZWN5Y2xlID0gJ0RpYWxvZ0xpZmVjeWNsZScsXG4gICAgUm93UmVvcmRlciA9ICdSb3dSZW9yZGVyJyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGVudW0gRm9ybUV2ZW50VHlwZUVudW0ge1xuICAgIENvbXBvbmVudExpZmVjeWNsZSA9ICdDb21wb25lbnRMaWZlY3ljbGUnLFxuICAgIFZhbHVlQ2hhbmdlID0gJ1ZhbHVlQ2hhbmdlJyxcbiAgICBTdWJtaXQgPSAnU3VibWl0JyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9JTklUID0gJ0NvbXBvbmVudC5PbkluaXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT05fVklFV19JTklUID0gJ0NvbXBvbmVudC5PblZpZXdJbml0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9OX0NPTlRFTlRfSU5JVCA9ICdDb21wb25lbnQuT25Db250ZW50SW5pdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9ERVNUUk9ZID0gJ0NvbXBvbmVudC5PbkRlc3Ryb3knO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU0lCSUxJVFkgPSAnRGlhbG9nLlZpc2liaWxpdHknO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZEV2ZW50RGF0YTxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIGV2ZW50U3VidHlwZT86IHN0cmluZztcbiAgICB2YWx1ZT86IEZpZWxkTW9kZWw7XG4gICAgZm9ybVZhbHVlPzogRWRpdG9yTW9kZWw7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FdmVudERhdGE8RWRpdG9yTW9kZWw+IHtcbiAgICBldmVudFN1YnR5cGU/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBFZGl0b3JNb2RlbDsgLy8gZGlyZWN0IHZhbHVlIGZyb20gZm9ybS52YWx1ZUNoYW5nZXMsIGRpc2FibGVkIGZpZWxkIHZhbHVlcyBhbmQgc2V0dGVycyBhcmUgbm90IGluY2x1ZGVkXG4gICAgc3VibWl0VmFsaWQ/OiBib29sZWFuOyAvLyB0cnVlIGlmIGZvcm0gaXMgdmFsaWRcbiAgICBzdWJtaXRWYWx1ZT86IEVkaXRvck1vZGVsOyAvLyB2YWx1ZSBvbiBzdWJtaXRcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUZpZWxkRXZlbnQ8RmllbGRWYWx1ZSwgRm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWUgPSB1bmRlZmluZWQ+IHtcbiAgICB0eXBlOiBGb3JtRmllbGRFdmVudFR5cGVFbnVtO1xuICAgIGZpZWxkQ29tcG9uZW50PzogRmllbGRUeXBlPENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT4+O1xuICAgIGZvcm1Db21wb25lbnQ/OiBJRm9ybUVkaXRvckNvbXBvbmVudDxGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgZmllbGRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w8RmllbGRWYWx1ZT47XG4gICAgZm9ybTogRm9ybUdyb3VwPHtbSyBpbiBrZXlvZiBGb3JtVmFsdWVdOiBBYnN0cmFjdENvbnRyb2w8Rm9ybVZhbHVlW0tdPn0+O1xuICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWU+O1xuICAgIGRhdGE/OiBGb3JtRmllbGRFdmVudERhdGE8RmllbGRWYWx1ZSwgRm9ybVZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRXZlbnQ8Rm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWUgPSB1bmRlZmluZWQ+IHtcbiAgICB0eXBlOiBGb3JtRXZlbnRUeXBlRW51bTtcbiAgICBmb3JtQ29tcG9uZW50PzogSUZvcm1FZGl0b3JDb21wb25lbnQ8Rm9ybVZhbHVlLCBQYXJlbnRGb3JtVmFsdWU+O1xuICAgIGZvcm06IEZvcm1Hcm91cDx7W0sgaW4ga2V5b2YgRm9ybVZhbHVlXTogQWJzdHJhY3RDb250cm9sPEZvcm1WYWx1ZVtLXT59PjtcbiAgICBkYXRhPzogRm9ybUV2ZW50RGF0YTxGb3JtVmFsdWU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvclJlc2V0RXZlbnQ8SXRlbT4ge1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgZmV0Y2g/OiBib29sZWFuOyAvLyBpZiBpdGVtIHNob3VsZCBiZSByZS1mZXRjaGVkIGFnYWluIHRocm91Z2ggZGF0YSBwcm92aWRlclxuICAgIGl0ZW0/OiBJdGVtOyAvLyBpZiBwcmVzZW50LCBpdGVtIHZhbHVlIHdpbGwgYmUgdXNlZCB0byByZXNldCBmb3JtXG4gICAgZmllbGRzPzogUGFydGlhbDxJdGVtPjtcbiAgICBkYXRhPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbn1cbiJdfQ==","import { Directive, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport * as i0 from \"@angular/core\";\nexport class AFormlyCustomFieldComponent extends FieldType {\n get model() {\n return this._model;\n }\n get form() {\n return this._form;\n }\n get options() {\n return this._options;\n }\n get key() {\n return this._key;\n }\n get formControl() {\n return this._formControl;\n }\n get props() {\n return this._props;\n }\n get showError() {\n return this._showError;\n }\n get id() {\n return this._id;\n }\n get formState() {\n return this._formState;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: AFormlyCustomFieldComponent, isStandalone: true, inputs: { field: \"field\", _model: [\"model\", \"_model\"], _form: [\"form\", \"_form\"], _options: [\"options\", \"_options\"], _key: [\"key\", \"_key\"], _formControl: [\"formControl\", \"_formControl\"], _props: [\"props\", \"_props\"], _showError: [\"showError\", \"_showError\"], _id: [\"id\", \"_id\"], _formState: [\"formState\", \"_formState\"] }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, decorators: [{\n type: Directive\n }], propDecorators: { field: [{\n type: Input,\n args: ['field']\n }], _model: [{\n type: Input,\n args: ['model']\n }], _form: [{\n type: Input,\n args: ['form']\n }], _options: [{\n type: Input,\n args: ['options']\n }], _key: [{\n type: Input,\n args: ['key']\n }], _formControl: [{\n type: Input,\n args: ['formControl']\n }], _props: [{\n type: Input,\n args: ['props']\n }], _showError: [{\n type: Input,\n args: ['showError']\n }], _id: [{\n type: Input,\n args: ['id']\n }], _formState: [{\n type: Input,\n args: ['formState']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBTTNDLE1BQU0sT0FBZ0IsMkJBQTJFLFNBQVEsU0FBc0U7SUFZM0ssSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQWEsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs4R0E5Q2lCLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQURoRCxTQUFTOzhCQUVrQixLQUFLO3NCQUE1QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNDLEtBQUs7c0JBQW5CLEtBQUs7dUJBQUMsTUFBTTtnQkFDSyxRQUFRO3NCQUF6QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0YsSUFBSTtzQkFBakIsS0FBSzt1QkFBQyxLQUFLO2dCQUNVLFlBQVk7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkFDSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBQ00sVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUNMLEdBQUc7c0JBQWYsS0FBSzt1QkFBQyxJQUFJO2dCQUNTLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBDb21tb25zRm9ybWx5RmllbGRQcm9wc30gZnJvbSAnLi9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnMsIENvbW1vbnNGb3JtbHlGb3JtU3RhdGV9IGZyb20gJy4vZm9ybWx5LW9wdGlvbnMubW9kZWwnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlID0gdW5kZWZpbmVkPiBleHRlbmRzIEZpZWxkVHlwZTxDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPj4ge1xuICAgIEBJbnB1dCgnZmllbGQnKSBkZWNsYXJlIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ21vZGVsJykgX21vZGVsITogVmFsdWU7XG4gICAgQElucHV0KCdmb3JtJykgX2Zvcm0hOiBGb3JtR3JvdXA8e1tLIGluIGtleW9mIEZvcm1WYWx1ZV06IEFic3RyYWN0Q29udHJvbDxGb3JtVmFsdWVbS10+fT47XG4gICAgQElucHV0KCdvcHRpb25zJykgX29wdGlvbnMhOiBDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnM8Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ2tleScpIF9rZXkhOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgIEBJbnB1dCgnZm9ybUNvbnRyb2wnKSBfZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDxWYWx1ZT47XG4gICAgQElucHV0KCdwcm9wcycpIF9wcm9wcyE6IENvbW1vbnNGb3JtbHlGaWVsZFByb3BzPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgQElucHV0KCdzaG93RXJyb3InKSBfc2hvd0Vycm9yITogYm9vbGVhbjtcbiAgICBASW5wdXQoJ2lkJykgX2lkITogc3RyaW5nO1xuICAgIEBJbnB1dCgnZm9ybVN0YXRlJykgX2Zvcm1TdGF0ZSE6IENvbW1vbnNGb3JtbHlGb3JtU3RhdGU8Rm9ybVZhbHVlPjtcblxuICAgIG92ZXJyaWRlIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IGtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgZm9ybUNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgcHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgc2hvd0Vycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0Vycm9yO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtU3RhdGU7XG4gICAgfVxufVxuIl19","import { DataProviderInst } from '@mediusinc/mng-commons/core';\nimport { TableDataProviderInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nexport class TableviewDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this.editorDataProvider = new EditorDataProviderInst(serviceType);\n this.tableDataProvider = new TableDataProviderInst(serviceType);\n }\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n get create() {\n return this.editorDataProvider.create;\n }\n get update() {\n return this.editorDataProvider.update;\n }\n get delete() {\n return this.editorDataProvider.delete;\n }\n get mapFetchItemToCreateItem() {\n return this.editorDataProvider.mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this.editorDataProvider.mapFetchItemToUpdateItem;\n }\n withGetAll(fn) {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n withGetAllEagerly(fn) {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n withFetch(fn) {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n withCreate(fn) {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n withUpdate(fn) {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n withDelete(fn) {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n withMapFetchItemToCreateItem(fn) {\n this.editorDataProvider.withMapFetchItemToCreateItem(fn);\n return this;\n }\n withMapFetchItemToUpdateItem(fn) {\n this.editorDataProvider.withMapFetchItemToUpdateItem(fn);\n return this;\n }\n reloadTable(event) {\n this.tableDataProvider.reloadTable(event);\n }\n resetEditor(event) {\n this.editorDataProvider.resetEditor(event);\n }\n}\nexport class DynamicTableviewDataProviderInst extends TableviewDataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGF0YS1wcm92aWRlcnMvdGFibGV2aWV3LmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBd0YscUJBQXFCLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFFaEwsT0FBTyxFQUtILHNCQUFzQixFQUd6QixNQUFNLGtEQUFrRCxDQUFDO0FBYzFELE1BQU0sT0FBTyx5QkFVVCxTQUFRLGdCQUE4QztJQVF0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksc0JBQXNCLENBQXlELFdBQVcsQ0FBQyxDQUFDO1FBQzFILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHFCQUFxQixDQUFvRCxXQUFXLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQXNFO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQTJEO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQWlEO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFnRTtRQUN2RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFtQixFQUF5RDtRQUNsRixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDRCQUE0QixDQUFDLEVBQTJEO1FBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXdDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUErQjtRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQ0FBNkYsU0FBUSx5QkFBK0Q7SUFDN0ssWUFBbUIsV0FBeUI7UUFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0YVByb3ZpZGVySW5zdCwgU2VydmljZUNsYXNzT3B0VHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEVhZ2VyRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZSwgVGFibGVEYXRhUHJvdmlkZXJJbnN0LCBUYWJsZVJlbG9hZEV2ZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7XG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckluc3QsXG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlRm5UeXBlLFxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJcbn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yUmVzZXRFdmVudH0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5cbmV4cG9ydCB0eXBlIElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwgPSBhbnksXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4gPSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4gJiBJVGFibGVEYXRhUHJvdmlkZXI8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSA9IGFueSxcbiAgICAgICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICAgICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgICAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgICAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIENyZWF0ZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbiAgICA+XG4gICAgZXh0ZW5kcyBEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+LFxuICAgICAgICBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD5cbntcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9yRGF0YVByb3ZpZGVyOiBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhYmxlRGF0YVByb3ZpZGVyOiBUYWJsZURhdGFQcm92aWRlckluc3Q8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc2VydmljZVR5cGU6IFNlcnZpY2VDbGFzcykge1xuICAgICAgICBzdXBlcihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMudGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0PFRhYmxlTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBnZXQgaXNMYXp5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZURhdGFQcm92aWRlci5pc0xhenk7XG4gICAgfVxuXG4gICAgZ2V0IHRhYmxlUmVsb2FkJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIudGFibGVSZWxvYWQkO1xuICAgIH1cblxuICAgIGdldCBlZGl0b3JSZXNldCQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5lZGl0b3JSZXNldCQ7XG4gICAgfVxuXG4gICAgZ2V0IGdldEFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLmZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICB3aXRoR2V0QWxsKGZuOiBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZTxUYWJsZU1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aEdldEFsbEVhZ2VybHkoZm46IFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRWFnZXJGblR5cGU8VGFibGVNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsRWFnZXJseShmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhGZXRjaChmbjogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hGblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhGZXRjaChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoQ3JlYXRlKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhVcGRhdGUoZm4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoRGVsZXRlPEl0ZW0gPSB1bmRlZmluZWQ+KGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoRGVsZXRlPEl0ZW0+KGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmVsb2FkVGFibGUoZXZlbnQ/OiBUYWJsZVJlbG9hZEV2ZW50PFNvcnRzLCBGaWx0ZXJzPik6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YVByb3ZpZGVyLnJlbG9hZFRhYmxlKGV2ZW50KTtcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnJlc2V0RWRpdG9yKGV2ZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+PiBleHRlbmRzIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8YW55LCBTZXJ2aWNlLCBhbnksIGFueSwgU2VydmljZUNsYXNzPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cbn1cbiJdfQ==","import { DynamicTableviewDataProviderInst, TableviewDataProviderInst } from './tableview.data-provider';\n/**\n * Creates and returns an instance of `TableviewDataProviderInst` with the specified options for managing tableview data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.filtersType] - The descriptor defining the filters type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.sortsType] - The descriptor defining the sorts type.\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>} An instance of `TableviewDataProviderInst` configured according to the provided options.\n */\nexport function tableviewDataProvider(opts) {\n return new TableviewDataProviderInst(opts?.service);\n}\nexport function tableviewDynamicDataProvider(serviceType) {\n return new DynamicTableviewDataProviderInst(serviceType);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kYXRhLXByb3ZpZGVycy90YWJsZXZpZXctZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXRHOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FTbkMsSUFRRDtJQUNHLE9BQU8sSUFBSSx5QkFBeUIsQ0FBcUYsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM1SixDQUFDO0FBSUQsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxXQUEwQjtJQUUxQixPQUFPLElBQUksZ0NBQWdDLENBQXdCLFdBQTJCLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCwgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnLi90YWJsZXZpZXcuZGF0YS1wcm92aWRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMgZm9yIG1hbmFnaW5nIHRhYmxldmlldyBkYXRhLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBUaGUgb3B0aW9ucyBvYmplY3QgdG8gY29uZmlndXJlIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy50eXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB0eXBlIG9mIG1vZGVsLlxuICogQHBhcmFtIHtTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlXSAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8Q3JlYXRlTW9kZWw+fSBbb3B0cy5maWx0ZXJzVHlwZV0gLSBUaGUgZGVzY3JpcHRvciBkZWZpbmluZyB0aGUgZmlsdGVycyB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy5zb3J0c1R5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHNvcnRzIHR5cGUuXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+fSBBbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgdGFibGVUeXBlPzogVHlwZURlc2NyaXB0b3I8VGFibGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbiAgICBzb3J0c1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxTb3J0cz4gfCBNb2RlbERlc2NyaXB0b3I8U29ydHM+O1xufSk6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3MsIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcywgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyKCk6IER5bmFtaWNUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PHVuZGVmaW5lZCwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyPFNlcnZpY2U+KHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RHluYW1pY0RhdGFQcm92aWRlcjxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PihcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1xuKTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { TableDescriptorInst, TableDynamicDescriptorInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDescriptorInst } from '../../editor/descriptors/editor.descriptor';\nimport { TableviewEditorTypeEnum } from '../../editor/models/editor.model';\nexport class TableviewDescriptorInst {\n constructor(model, opts) {\n this._isLocalized = false;\n this._model = model;\n this._table = new TableDescriptorInst(opts?.tableModel ?? model);\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst(opts?.addModel ?? model, TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst(opts?.editModel ?? model, TableviewEditorTypeEnum.Edit);\n }\n get table() {\n return this._table;\n }\n get detailsEditor() {\n return this._detailsEditor;\n }\n get addEditor() {\n return this._addEditor;\n }\n get editEditor() {\n return this._editEditor;\n }\n get model() {\n return this._model;\n }\n isLocalized() {\n return this._isLocalized;\n }\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n withEditorDescriptors(descriptor) {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n withDetailsDescriptor(descriptor) {\n this._detailsEditor = descriptor;\n return this;\n }\n withAddDescriptor(descriptor) {\n this._addEditor = descriptor;\n return this;\n }\n withEditDescriptor(descriptor) {\n this._editEditor = descriptor;\n return this;\n }\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details) {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n withValidation(name, expression, message, opts) {\n return this.withValidationUnsafe(name, expression, message, opts);\n }\n withValidationUnsafe(name, expression, message, opts) {\n this._detailsEditor.withValidationUnsafe(name, expression, message, opts);\n this._addEditor.withValidationUnsafe(name, expression, message, opts);\n this._editEditor.withValidationUnsafe(name, expression, message, opts);\n return this;\n }\n getColumn(property) {\n return this._table.getColumn(property);\n }\n getColumnUnsafe(property) {\n return this._table.getColumnUnsafe(property);\n }\n removeColumn(property) {\n this._table.removeColumn(property);\n }\n removeColumnUnsafe(property) {\n this._table.removeColumnUnsafe(property);\n }\n withColumn(column) {\n this._table.withColumn(column);\n return this;\n }\n addColumn(property) {\n return this._table.addColumn(property);\n }\n addColumnEnum(property, enumDesc) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n addColumnUnsafe(property) {\n return this._table.addColumnUnsafe(property);\n }\n withColumns(...properties) {\n this._table.withColumns(...properties);\n return this;\n }\n getSort(property) {\n return this._table.getSort(property);\n }\n getSortUnsafe(property) {\n return this._table.getSortUnsafe(property);\n }\n removeSort(property) {\n this._table.removeSort(property);\n }\n removeSortUnsafe(property) {\n this._table.removeSortUnsafe(property);\n }\n addSort(property, isDefault = false, ascending) {\n return this._table.addSort(property, isDefault, ascending);\n }\n addSortUnsafe(property, isDefault = false, ascending) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n withSort(property, isDefault = false, ascending) {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n withSortUnsafe(property, isDefault = false, ascending) {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n withDefaultSort(property, ascending, enabled) {\n this._table.withDefaultSort(property, ascending, enabled);\n return this;\n }\n withDefaultSortUnsafe(property, ascending, enabled) {\n this._table.withDefaultSortUnsafe(property, ascending, enabled);\n return this;\n }\n withSorts(...properties) {\n this._table.withSorts(...properties);\n return this;\n }\n withSortsUnsafe(...properties) {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n withDefaultSorts(...properties) {\n this._table.withDefaultSorts(...properties);\n return this;\n }\n withoutDefaultSorts() {\n this._table.withoutDefaultSorts();\n return this;\n }\n getFilter(property) {\n return this._table.getFilter(property);\n }\n getFilterUnsafe(property) {\n return this._table.getFilterUnsafe(property);\n }\n removeFilter(property) {\n this._table.removeFilter(property);\n }\n removeFilterUnsafe(property) {\n this._table.removeFilterUnsafe(property);\n }\n addFilter(property) {\n return this._table.addFilter(property);\n }\n addFilterUnsafe(property) {\n return this._table.addFilterUnsafe(property);\n }\n addFilterLookup(property, provider, optionsValueProperty) {\n return this._table.addFilterLookup(property, provider, optionsValueProperty);\n }\n addFilterLookupUnsafe(property, provider, optionsValueProperty) {\n return this._table.addFilterLookupUnsafe(property, provider, optionsValueProperty);\n }\n addFilterLookupEnum(property, enumDesc, options) {\n return this._table.addFilterLookupEnum(property, enumDesc, options);\n }\n addFilterLookupEnumUnsafe(property, enumDesc, options) {\n return this._table.addFilterLookupEnumUnsafe(property, enumDesc, options);\n }\n addFilterFromColumn(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumn(property, displayType, forceSimple);\n }\n withFiltersFromColumns(...properties) {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n withFiltersFromColumnsUnsafe(...properties) {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n addFilterFromColumnUnsafe(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n withFilter(property, filter) {\n this._table.withFilter(property, filter);\n return this;\n }\n withFilterUnsafe(filter) {\n this._table.withFilterUnsafe(filter);\n return this;\n }\n removeField(property) {\n this.removeFieldUnsafe(property);\n }\n removeFieldUnsafe(property) {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n addFieldDescriptor(field) {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n addFieldUnsafe(property) {\n const field = this._detailsEditor.addFieldUnsafe(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldToEditAndAdd(field) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, FieldsManageModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = this._detailsEditor.addFieldLookupUnsafe(property, opts);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe(property, \n // cast is needed, because the parent model of TableviewDescriptorInst is expected to be TableviewModel, but it cannot be in case there are different types across details, add or edit\n tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withTabGroup(name, title) {\n this._detailsEditor.addTabGroup(name, title);\n this._addEditor.addTabGroup(name, title);\n this._editEditor.addTabGroup(name, title);\n return this;\n }\n withFieldGroup(name, title) {\n this._detailsEditor.addFieldGroup(name, title);\n this._addEditor.addFieldGroup(name, title);\n this._editEditor.addFieldGroup(name, title);\n return this;\n }\n copy() {\n const tableview = new TableviewDescriptorInst(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n return this;\n }\n}\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst {\n constructor(model) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n get table() {\n return this._table;\n }\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n removeColumn(property) {\n this._table.removeColumn(property);\n return this;\n }\n withEntityForTranslations(i18nBaseKey) {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n /**\n * creates deep copy of tableview object and its children\n */\n copy() {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWhLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBVXpFLE1BQU0sT0FBTyx1QkFBdUI7SUF3QmhDLFlBQW1CLEtBQXNDLEVBQUUsSUFBOEU7UUFGL0gsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUE2QixJQUFJLEVBQUUsVUFBVSxJQUFLLEtBQWdELENBQUMsQ0FBQztRQUN6SSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQW9DLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBOEIsSUFBSSxFQUFFLFFBQVEsSUFBSyxLQUE4QyxFQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hLLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FDdkMsSUFBSSxFQUFFLFNBQVMsSUFBSyxLQUErQyxF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LE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUk7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgSUxvb2t1cERhdGFQcm92aWRlciwgSVRhYmxldmlld0Rlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2UsIElUYWJsZURhdGFQcm92aWRlciwgVGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3IsIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHMsIElGaWVsZHNNYW5hZ2V9IGZyb20gJy4uLy4uL2VkaXRvci9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi8uLi9lZGl0b3IvbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9maWVsZC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiA9IHtcbiAgICB0YWJsZU1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPFRhYmxlTW9kZWw+O1xuICAgIGFkZE1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPEFkZE1vZGVsPjtcbiAgICBlZGl0TW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8RWRpdE1vZGVsPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxcbiAgICAgICAgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIFNvcnRzID0ga2V5b2YgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpbHRlcnMgPSBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgICAgIFRhYmxlTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgRWRpdE1vZGVsID0gVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpZWxkc01hbmFnZU1vZGVsID0gVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxUYWJsZXZpZXdNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbiAgICA+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGVzY3JpcHRvcjxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgICAgICBJRmllbGRzTWFuYWdlPEZpZWxkc01hbmFnZU1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFRhYmxldmlld01vZGVsPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGU6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCBfZGV0YWlsc0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2FkZEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8QWRkTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2VkaXRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJvdGVjdGVkIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWw+LCBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ob3B0cz8udGFibGVNb2RlbCA/PyAobW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD4pKTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFRpdGxlKGAke3RoaXMuX21vZGVsLmkxOG5CYXNlS2V5fS5uYW1lYCk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbCwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aERpc2FibGVkKCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxBZGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG9wdHM/LmFkZE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxBZGRNb2RlbD4pLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICAgICAgb3B0cz8uZWRpdE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxFZGl0TW9kZWw+KSxcbiAgICAgICAgICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWxzRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFkZEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3IgYXMgdW5rbm93biBhcyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvciBhcyB1bmtub3duIGFzIEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBuZXcgY29weSBvZiBlZGl0b3IgZGVzY3JpcHRvciBhbmQgbWFrZXMgaXQgZGlzYWJsZWRcbiAgICAgKiB1c2FibGUgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzOjp3aXRoRWRpdG9yRGVzY3JpcHRvcnMsIHdoZXJlIGRldGFpbHNEZXNjcmlwdG9yIGlzIG1hZGUgbm9uLWRpc2FibGVkXG4gICAgICogQHBhcmFtIHR5cGUgd2hpY2ggZWRpdG9yIHR5cGUgdG8gc2V0IHRvIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZEVkaXRvckRlc2NyaXB0b3IodHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbjxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFZhbGlkYXRpb25VbnNhZmUobmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyBhcyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZT4obmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBDb2x1bW5Nb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPiwgQ29sdW1uVmFsdWUgPSBUYWJsZU1vZGVsW1Byb3BlcnR5XT4ocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRDb2x1bW48UHJvcGVydHksIENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnksIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCwgQ29sdW1uVmFsdWU+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlPihjb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5XT4sIFRhYmxlTW9kZWwsIFRhYmxlTW9kZWxbUHJvcGVydHldPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5FbnVtPFByb3BlcnR5S2V5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPj4ocHJvcGVydHk6IFByb3BlcnR5S2V5LCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkVudW0ocHJvcGVydHksIGVudW1EZXNjKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uVW5zYWZlPENvbHVtbk1vZGVsID0gYW55Pihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbnMoLi4ucHJvcGVydGllczogKGtleW9mIFRhYmxlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbnMoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0KHByb3BlcnR5OiBTb3J0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZVNvcnQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNvcnQocHJvcGVydHk6IFNvcnRzLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkU29ydChwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KHByb3BlcnR5OiBTb3J0cywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnQocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IFNvcnRzLCBhc2NlbmRpbmc/OiBib29sZWFuLCBlbmFibGVkPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnQocHJvcGVydHksIGFzY2VuZGluZywgZW5hYmxlZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgYXNjZW5kaW5nPzogYm9vbGVhbiwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5LCBhc2NlbmRpbmcsIGVuYWJsZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzKC4uLnByb3BlcnRpZXM6IFNvcnRzW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0c1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydHMoLi4ucHJvcGVydGllczogU29ydHNbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aG91dERlZmF1bHRTb3J0cygpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aG91dERlZmF1bHRTb3J0cygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IGFueT4ocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWwgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBUYWJsZU1vZGVsW0ZpbHRlcnNdIDogbmV2ZXI+KHByb3BlcnR5OiBGaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyTG9va3VwPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IG5ldmVyLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICAgICAgcHJvcGVydHk6IEZpbHRlcnMsXG4gICAgICAgIHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZSwgYW55LCBhbnk+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IGtleW9mIEZpbHRlck1vZGVsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KHByb3BlcnR5LCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2UsIGFueSwgYW55PixcbiAgICAgICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckxvb2t1cFVuc2FmZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHByb3ZpZGVyLCBvcHRpb25zVmFsdWVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW08RW51bT4ocHJvcGVydHk6IEZpbHRlcnMsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBFeHRyYWN0PEZpbHRlcnMsIFByb3BlcnR5PixcbiAgICAgICAgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sXG4gICAgICAgIGZvcmNlU2ltcGxlID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHksIEZpbHRlck1vZGVsPihwcm9wZXJ0eSwgZGlzcGxheVR5cGUsIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiBFeHRyYWN0PEZpbHRlcnMsIGtleW9mIFRhYmxlTW9kZWw+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHksIGRpc3BsYXlUeXBlLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBGaWx0ZXJzLCBmaWx0ZXI6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5LCBmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IGtleW9mIEZpZWxkc01hbmFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBUYWJsZXZpZXdNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBBZGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQgYXMgdW5rbm93biBhcyBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsID0gRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkIGFzIHVua25vd24gYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkcyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgRmllbGRzTWFuYWdlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHAgPT4gdGhpcy5hZGRGaWVsZChwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcpOiBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxGaWVsZHNNYW5hZ2VNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRmllbGRUb0VkaXRBbmRBZGQ8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIGFueSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KSB7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT59IG9wdHMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGNvbmZpZ3VyaW5nIHR5cGUgYW5kL29yIHNlcnZpY2UgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsXG4gICAgICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgICAgIExvb2t1cE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPiA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sXG4gICAgICAgIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgb3B0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogW1VOU0FGRV0gQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBVTlNBRkUgYmVjYXVzZSBwcm9wZXJ0eSBpcyBub3QgdHlwZS1jaGVja2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIEZpZWxkVmFsdWUgPSBMb29rdXBNb2RlbD4ocHJvcGVydHk6IHN0cmluZywgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgb3B0cyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQgYXMgdW5rbm93biBhcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLCBFbnVtIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LFxuICAgICAgICBvcHRpb25zPzogQXJyYXk8RW51bT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEZpZWxkc01hbmFnZU1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAvLyBjYXN0IGlzIG5lZWRlZCwgYmVjYXVzZSB0aGUgcGFyZW50IG1vZGVsIG9mIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0IGlzIGV4cGVjdGVkIHRvIGJlIFRhYmxldmlld01vZGVsLCBidXQgaXQgY2Fubm90IGJlIGluIGNhc2UgdGhlcmUgYXJlIGRpZmZlcmVudCB0eXBlcyBhY3Jvc3MgZGV0YWlscywgYWRkIG9yIGVkaXRcbiAgICAgICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIGFueSwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLFxuICAgICAgICBTZXJ2aWNlLFxuICAgICAgICBGaWVsZE1vZGVsID0gQXJyYXlJdGVtVHlwZTxGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldXG4gICAgPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBGaWVsZHNNYW5hZ2VNb2RlbD4odGhpcy5fbW9kZWwuY29weSgpKTtcbiAgICAgICAgdGFibGV2aWV3Ll90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fYWRkRWRpdG9yID0gdGhpcy5fYWRkRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9lZGl0RWRpdG9yID0gdGhpcy5fZWRpdEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgcmV0dXJuIHRhYmxldmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIExvY2FsaXphdGlvbk1vZGVsID0gQXJyYXlJdGVtVHlwZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPExvY2FsaXphdGlvbk1vZGVsPixcbiAgICAgICAgbG9jYWxlUHJvcGVydHk6IGtleW9mIExvY2FsaXphdGlvbk1vZGVsXG4gICAgKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWRVbnNhZmU8TG9jYWxpemF0aW9uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LCBsb2NhbGVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzTG9jYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aExvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuZGV0YWlsc0VkaXRvci5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHksIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5lZGl0RWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCBleHRlbmRzIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICBzdXBlcihtb2RlbCk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KHRoaXMubW9kZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBoaWRkZW4gc3RhdGUgdG8gY29sdW1uIHdpdGggZ2l2ZW4gcHJvcGVydHlcbiAgICAgKiBlcXVhbHMgdG8gYmUgcmVtb3ZpbmcgaW4gYXV0byBhbmQgYmFzZSB0YWJsZXZpZXcgZGVzY3JpcHRvclxuICAgICAqICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRW50aXR5Rm9yVHJhbnNsYXRpb25zKGkxOG5CYXNlS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUubW9kZWwud2l0aEkxOG5CYXNlKGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5tb2RlbC53aXRoSTE4bkJhc2UoaTE4bkJhc2VLZXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiB0YWJsZXZpZXcgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3JJbnQodGhpcy5tb2RlbC5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { TableviewDescriptorInst, TableviewDynamicDescriptorInt } from './tableview.descriptor';\nexport function tableviewDescriptor(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDescriptorMultiModel(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDynamicDescriptor(modelOrOpts) {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor(modelOrOpts?.id, modelOrOpts?.title, modelOrOpts?.i18nBase));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXctZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSS9HLE9BQU8sRUFBQyx1QkFBdUIsRUFBMEMsNkJBQTZCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQThDdEksTUFBTSxVQUFVLG1CQUFtQixDQUMvQixXQUFxSTtBQUNySSw2REFBNkQ7QUFDN0QsSUFBcUc7SUFFckcsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLEVBQVMsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7U0FBTSxJQUFJLFdBQVcsWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksdUJBQXVCLENBQTRFLFdBQVcsQ0FBQyxDQUFDO0lBQy9ILENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLENBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3SSxDQUFDO0FBQ0wsQ0FBQztBQWlFRCxNQUFNLFVBQVUsNkJBQTZCLENBU3pDLFdBRStJO0FBQy9JLDZEQUE2RDtBQUM3RCxJQUFnSjtJQUVoSixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssRUFBUyxDQUFDLENBQUM7SUFDbEksQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSx1QkFBdUIsQ0FBNEUsV0FBVyxDQUFDLENBQUM7SUFDL0gsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssQ0FBUSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdJLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxXQUF3RztJQUV4RyxPQUFPLFdBQVcsWUFBWSxlQUFlO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLDZCQUE2QixDQUFDLFdBQVcsQ0FBQztRQUNoRCxDQUFDLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLGVBQWUsQ0FBTSxXQUFXLEVBQUUsRUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFlLEVBQUUsV0FBVyxFQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ2hLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0cywgVHlwZURlc2NyaXB0b3IsIG1vZGVsfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCwgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHMsIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50fSBmcm9tICcuL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxudHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlU29ydHNGaWx0ZXJzUGFyZW50T3B0c1R5cGU8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0ge1xuICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgc29ydHNUeXBlPzogVHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPEZpbHRlcnM+O1xuICAgIHBhcmVudEVkaXRvclR5cGU/OlxuICAgICAgICB8IFR5cGVEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPlxuICAgICAgICB8IE1vZGVsRGVzY3JpcHRvcjxQYXJlbnRFZGl0b3JNb2RlbD5cbiAgICAgICAgfCBFZGl0b3JEZXNjcmlwdG9ySW5zdDxQYXJlbnRFZGl0b3JNb2RlbCwgYW55PlxuICAgICAgICB8IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnksIGFueSwgYW55LCBhbnksIFBhcmVudEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxNb2RlbD47XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFxuICAgIE1vZGVsLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnMsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwsXG4gICAgVGFibGVNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbFxuPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3I8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsIFRhYmxlTW9kZWwgPSBNb2RlbD4oXG4gICAgb3B0czogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvcjxNb2RlbCwgU29ydHMgPSBrZXlvZiBNb2RlbCwgRmlsdGVycyA9IGtleW9mIE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCwgVGFibGVNb2RlbCA9IE1vZGVsPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgTW9kZWwsIE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pIHtcbiAgICBpZiAobW9kZWxPck9wdHMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+KG1vZGVsPE1vZGVsPigpKTtcbiAgICB9IGVsc2UgaWYgKG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWxPck9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWw8TW9kZWw+KG1vZGVsT3JPcHRzKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbENyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5cbmV4cG9ydCB0eXBlIFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWxDcmVhdGVPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiAmIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHM8TW9kZWw+O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbCwgVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbDxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbFxuPihcbiAgICBvcHRzOiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG1vZGVsT3JPcHRzPzpcbiAgICAgICAgfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+XG4gICAgICAgIHwgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU11bHRpTW9kZWxXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKSB7XG4gICAgaWYgKG1vZGVsT3JPcHRzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPihtb2RlbDxNb2RlbD4oKSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsT3JPcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsPE1vZGVsPihtb2RlbE9yT3B0cykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9yKFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPGFueT4gfCBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxhbnk+XG4pOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgcmV0dXJuIG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yXG4gICAgICAgID8gbmV3IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50KG1vZGVsT3JPcHRzKVxuICAgICAgICA6IG5ldyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludChuZXcgTW9kZWxEZXNjcmlwdG9yPGFueT4obW9kZWxPck9wdHM/LmlkIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LnRpdGxlIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LmkxOG5CYXNlIGFzIHN0cmluZykpO1xufVxuIl19","import { GetterPipe } from '@mediusinc/mng-commons/core';\nexport function convertDataToStringWithDelimiter(data, delimiter, descriptor, translate) {\n const replaceNullValue = (key, value) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row) => descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n }\n else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter))\n ].join('\\r\\n');\n}\nexport function saveFileAs(blob, filename) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n }));\n document.body.removeChild(link);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvZmlsZXMtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl2RCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBVyxFQUFFLFNBQWlCLEVBQUUsVUFBa0QsRUFBRSxTQUEyQjtJQUM1SixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDcEMsT0FBTztRQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDcEksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDckIsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPO2FBQ25CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNWLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUN2QjtLQUNKLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUNuRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhDLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ3BCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQ0wsQ0FBQztJQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge0dldHRlclBpcGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKGRhdGE6IGFueVtdLCBkZWxpbWl0ZXI6IHN0cmluZywgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVwbGFjZU51bGxWYWx1ZSA9IChrZXk6IGFueSwgdmFsdWU6IGFueSkgPT4gKHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSk7XG4gICAgY29uc3QgZ2V0dGVyUGlwZSA9IG5ldyBHZXR0ZXJQaXBlKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZGVzY3JpcHRvci50YWJsZS5jb2x1bW5zLm1hcChjb2wgPT4gdHJhbnNsYXRlLmluc3RhbnQoZGVzY3JpcHRvci5tb2RlbC5pMThuQmFzZUtleSArICcucHJvcGVydGllcy4nICsgY29sLnByb3BlcnR5KSkuam9pbihkZWxpbWl0ZXIpLFxuICAgICAgICAuLi5kYXRhLm1hcCgocm93OiBhbnkpID0+XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnRhYmxlLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAubWFwKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdldHRlclBpcGUudHJhbnNmb3JtKHJvd1tjb2x1bW4ucHJvcGVydHldLCBjb2x1bW4uZ2V0dGVyLCByb3cpLCByZXBsYWNlTnVsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyb3dbY29sdW1uLnByb3BlcnR5XSwgcmVwbGFjZU51bGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKGRlbGltaXRlcilcbiAgICAgICAgKVxuICAgIF0uam9pbignXFxyXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZUFzKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgbGluay5ocmVmID0gYmxvYlVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgbGluay5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZpZXc6IHdpbmRvd1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xufVxuIl19","import { Injector, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams } from '@mediusinc/mng-commons/core';\nimport { actionGetProviderCfgObj } from '../../action/descriptors/action-descriptor.factory';\nimport { actionEditorGetProviderCfgObj } from '../../action/descriptors/action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst, actionEditorCancel } from '../../action/descriptors/action-editor.descriptor';\nimport { actionLink } from '../../action/descriptors/action-link-descriptor.factory';\nimport { ActionDescriptorInst } from '../../action/descriptors/action.descriptor';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { DataProviderExecutor } from '../../action/services/data-provider-executor.service';\nimport { DATA_LANGUAGE_DROPDOWN_COMPONENT_IT } from '../../action/services/tokens/data-language-dropdown.token';\nimport { convertDataToStringWithDelimiter, saveFileAs } from './files-export';\nexport var TableviewDefaultActionsEnum;\n(function (TableviewDefaultActionsEnum) {\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Details\"] = 0] = \"Details\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Add\"] = 1] = \"Add\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"EditOnDetails\"] = 3] = \"EditOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Delete\"] = 4] = \"Delete\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"DeleteOnDetails\"] = 5] = \"DeleteOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Refresh\"] = 6] = \"Refresh\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Export\"] = 7] = \"Export\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportJson\"] = 8] = \"ExportJson\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportCsv\"] = 9] = \"ExportCsv\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"LocalizationLanguageSelect\"] = 10] = \"LocalizationLanguageSelect\";\n})(TableviewDefaultActionsEnum || (TableviewDefaultActionsEnum = {}));\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\nexport function tableviewGetDefaultActions() {\n return [...tableviewDefaultActions];\n}\nexport function tableviewCreateDefaultActions(tableview, defaultActions, defaultActionsOverrides, injector) {\n return (defaultActions ?? tableviewGetDefaultActions())\n .map(t => tableviewCreateDefaultAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null);\n}\nexport function tableviewCreateDefaultAction(type, tableview, defaultActions, defaultActionsOverrides, injector) {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, { injector });\n case TableviewDefaultActionsEnum.Edit:\n return tableviewActionEditOnTable(tableview.model, tableview.editEditor, { table: tableview.table, injector });\n case TableviewDefaultActionsEnum.Delete:\n return tableviewActionDeleteOnTable(tableview.model, { table: tableview.table, injector });\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewActionAddOnTable(tableview.model, tableview.addEditor, { injector });\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewActionLocalizationLangSelectOnTable(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewActionRefreshOnTable(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewActionExportOnTable(tableview, { injector: injector, defaultActions: defaultActions })\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit) ? tableviewActionEditOnDetails(tableview.model, { injector }) : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewActionDeleteOnDetails(tableview.model, { injector }) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\nfunction getInjector(injector) {\n return injector === undefined ? inject(Injector) : injector;\n}\nfunction getRouteData(injector) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data;\n}\nexport const tableviewActionEditorDetailsActionName = 'details';\nexport const tableviewActionEditorDetailsRoute = ':itemId';\nexport function tableviewActionDetailsOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorDetailsActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);\n action.withRouteTrigger(tableviewActionEditorDetailsRoute);\n action.withEditorActions([actionEditorCancel(action)]);\n action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorAddActionName = 'add';\nexport const tableviewActionEditorAddRoute = 'add';\nexport function tableviewActionAddOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasAdd) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorAddActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withRouteTrigger(tableviewActionEditorAddRoute)\n .withButtonOpts({\n icon: 'pi pi-plus'\n });\n action.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n action.withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorEditActionName = 'edit';\nexport const tableviewActionEditorEditRoute = ':itemId/edit';\nexport function tableviewActionEditOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasEdit) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorEditActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.Small\n }\n })\n .withRouteTrigger(tableviewActionEditorEditRoute)\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport function tableviewActionEditOnDetails(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n const linkAction = actionLink(tableviewActionEditorEditActionName, { model: model });\n linkAction\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit')\n .withQueryParams({}, 'merge')\n .withButtonOpts({\n icon: 'pi pi-pencil',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return linkAction;\n}\nexport const tableviewActionDeleteActionName = 'delete';\nexport function tableviewActionDeleteOnTable(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {\n const action = new ActionDescriptorInst(tableviewActionDeleteActionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n model: model\n })\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n size: StyleSizeEnum.Small,\n level: StyleLevelEnum.Danger\n }\n })\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withRunConfirmation()\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n return action;\n }\n return null;\n}\nexport function tableviewActionDeleteOnDetails(model, opts) {\n const action = tableviewActionDeleteOnTable(model, opts);\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx => dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n }))\n : null)\n .withButtonOpts({\n ...action.button,\n label: undefined,\n style: {\n ...action.button?.style,\n size: StyleSizeEnum.Normal\n }\n });\n return action;\n }\n return null;\n}\nexport function tableviewActionExportOnTable(descriptor, opts) {\n const exportAction = new ActionDescriptorInst('export', {\n model: descriptor.model\n })\n .withButton(undefined, 'pi pi-download')\n .withSubactionsAsMenu();\n const subactions = [];\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))\n subactions.push(tableviewActionExportJsonOnTable(descriptor, opts));\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))\n subactions.push(tableviewActionExportCsvOnTable(descriptor, opts));\n exportAction.withSubactions(...subactions);\n exportAction.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n return exportAction;\n}\nexport function tableviewActionExportJsonOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], { type: 'application/json;charset=utf-8' });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-code')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionExportCsvOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-file')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionRefreshOnTable(descriptor, opts) {\n const action = new ActionDescriptorInst('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withNotifications({ runOnSuccess: false })\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)\n .withButtonOpts({\n icon: 'pi pi-refresh',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return action;\n}\nexport function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst('translator', {\n model: descriptor.model\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl0SSxPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFB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O2FBQzlELG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCB7aW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5lZGl0RWRpdG9yLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgLy8gdGFibGUgdG9vbGJhciBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlKHRhYmxldmlldy5tb2RlbCwgdGFibGV2aWV3LmFkZEVkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uUmVmcmVzaE9uVGFibGUodGFibGV2aWV3Lm1vZGVsKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpXG4gICAgICAgICAgICAgICAgPyB0YWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlKHRhYmxldmlldywge2luamVjdG9yOiBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnM6IGRlZmF1bHRBY3Rpb25zfSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCkgPyB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzKHRhYmxldmlldy5tb2RlbCwge2luamVjdG9yfSkgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgLy8gc3ViYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3Y6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbmplY3RvcihpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdG9yID09PSB1bmRlZmluZWQgPyBpbmplY3QoSW5qZWN0b3IpIDogaW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlRGF0YShpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCkge1xuICAgIHJldHVybiBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChBY3RpdmF0ZWRSb3V0ZSk/LnNuYXBzaG90LmRhdGEgYXMgVGFibGV2aWV3Um91dGVEYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUgPSAnZGV0YWlscyc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc1JvdXRlID0gJzppdGVtSWQnO1xuXG50eXBlIFRhYmxldmlld0FjdGlvbkRldGFpbHNPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZXRhaWxzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIFRhYmxlTW9kZWwsIHVuZGVmaW5lZCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckFkZFJvdXRlKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGx1cydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIGFjdGlvbi53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0QWN0aW9uTmFtZSA9ICdlZGl0JztcbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0Um91dGUgPSAnOml0ZW1JZC9lZGl0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPiA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4gfCBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueSwgRWRpdE1vZGVsPjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZU9wdHNUeXBlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I6IHRydWUsXG4gICAgICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGVuY2lsJyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiBTdHlsZVNpemVFbnVtLlNtYWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgIC53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsc09wdHNUeXBlID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsczxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAocm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zICYmICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtBY3Rpb24gPSBhY3Rpb25MaW5rKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7bW9kZWw6IG1vZGVsfSk7XG4gICAgbGlua0FjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXBlbmNpbCcsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGxpbmtBY3Rpb247XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25EZWxldGVBY3Rpb25OYW1lID0gJ2RlbGV0ZSc7XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4odGFibGV2aWV3QWN0aW9uRGVsZXRlQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uU21hbGwsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5EYW5nZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhSdW5Db25maXJtYXRpb24oKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHNPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIE1vZGVsLCBNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlPE1vZGVsLCBNb2RlbCwgU2VydmljZT4obW9kZWwsIG9wdHMpIGFzIHVua25vd24gYXMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuRGVsZXRlT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8uY2xvc2VFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24uYnV0dG9uLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLmJ1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uTm9ybWFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbih1bmRlZmluZWQsICdwaSBwaS1kb3dubG9hZCcpXG4gICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgY29uc3Qgc3ViYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlKGRlc2NyaXB0b3IsIG9wdHMpKTtcbiAgICBpZiAob3B0cz8uZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBvcHRzPy5kZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydENzdk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuXG4gICAgZXhwb3J0QWN0aW9uLndpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnMpO1xuICAgIGV4cG9ydEFjdGlvbi53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhCdXR0b24odW5kZWZpbmVkLCAncGkgcGktY29kZScpXG4gICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FeHBvcnRDc3ZPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoTm90aWZpY2F0aW9ucyh7cnVuT25TdWNjZXNzOiBmYWxzZX0pXG4gICAgICAgIC53aXRoQnV0dG9uKHVuZGVmaW5lZCwgJ3BpIHBpLWZpbGUnKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXJlZnJlc2gnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBsZXZlbDogU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG59XG5cbnR5cGUgVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uTG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { tableviewCreateDefaultActions, tableviewGetDefaultActions } from './tableview-default-actions';\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder {\n constructor(_descriptor, _dataProvider, injector) {\n this._descriptor = _descriptor;\n this._dataProvider = _dataProvider;\n this.injector = injector;\n this.defaultActions = tableviewGetDefaultActions().map(a => ({ type: a, descriptor: undefined }));\n this._customActions = [];\n }\n prepareSetterParams() {\n return { descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector };\n }\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn) {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn) {\n adjustFn(this._descriptor);\n return this;\n }\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn) {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn) {\n adjustFn(this._dataProvider);\n return this;\n }\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn) {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n /**\n * Associates a fetch function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the fetch API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of fetch function on API service.\n */\n withDataServiceFetchFn(serviceFn, itemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withFetch((itemId, service) => service[serviceFn]({ [itemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Associates a create function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the create API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} serviceFnItemParamName The parameter name for item used as the key within the request object of create function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, AddModel>} [mapFetchItem] Map function to transform model from fetch to form's add model.\n */\n withDataServiceCreateFn(serviceFn, serviceFnItemParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withCreate((item, service) => service[serviceFn]({ [serviceFnItemParamName]: item }));\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToCreateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates an update function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the update API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} fnItemParamName The parameter name for item used as the key within the request object of update function on API service.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} [fnItemIdParamName] The parameter name for itemId used as the key within the request object of update function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, EditModel>} [mapFetchItem] Map function to transform model from fetch to form' edit model.\n */\n withDataServiceUpdateFn(serviceFn, fnItemParamName, fnItemIdParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withUpdate((id, item, service) => {\n const params = { [fnItemParamName]: item };\n if (fnItemIdParamName) {\n params[fnItemIdParamName] = id;\n }\n return service[serviceFn](params);\n });\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToUpdateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates a delete function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the delete API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of delete function on API service.\n */\n withDataServiceDeleteFn(serviceFn, fnItemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withDelete((itemId, service) => service[serviceFn]({ [fnItemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions() {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService , ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride(type, fn) {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n /**\n * Adds a custom action.\n *\n * @deprecated Use on of {withActionOnTable}, {withActionOnDetailsEditor}, {withActionOnEditEditor} or {withActionOnAddEditor} instead.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on table row or top (header or toolbar).\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnTable(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.READ]);\n if (![\n ActionPositionEnum.ToolbarLeft,\n ActionPositionEnum.ToolbarRight,\n ActionPositionEnum.TableHeader,\n ActionPositionEnum.RowInline,\n ActionPositionEnum.RowClick\n ].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on table (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on details editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnDetailsEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on details (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on edit editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnEditEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.EDIT]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on edit (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on add editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnAddEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.ADD]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on add (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * @internal\n *\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, TableModel, AddModel, EditModel, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return {\n actions: tableviewCreateDefaultActions(this._descriptor, this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type), this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce((acc, a) => ({\n ...acc,\n [a.type]: a.descriptor\n }), {}), this.injector).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWlucHV0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctaW5wdXQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBR0gsb0JBQW9CLEVBSXZCLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sK0RBQStELENBQUM7QUFFL0csT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHcEYsT0FBTyxFQUE4Qiw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBaUJuSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFlOUIsWUFDWSxXQUF1QixFQUN2QixhQUEyQixFQUNsQixRQUFrQjtRQUYzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTi9CLG1CQUFjLEdBQW9CLDBCQUEwQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxtQkFBYyxHQUFnQyxFQUFFLENBQUM7SUFNL0QsQ0FBQztJQUVJLG1CQUFtQjtRQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09B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aW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZSxcbiAgICBDbGFzc0Z1bmN0aW9uS2V5c1dpdGhQYXJhbUFuZFJldHVyblR5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBJZFR5cGUsXG4gICAgTnVsbGFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy90YWJsZXZpZXctYWN0aW9uLWRlZmF1bHQtY2F0ZWdvcmllcy5tb2RlbCc7XG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGV9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXR9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sIHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zLCB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9uc30gZnJvbSAnLi90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0ge2Rlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyOyBpbmplY3RvcjogSW5qZWN0b3J9O1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4gPSAoXG4gICAgcGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbikgPT4gTnVsbGFibGU8XG4gICAgfCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuICAgIHwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIGFueSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuPjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IChwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gRGVzY3JpcHRvcjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0gKHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiBEYXRhUHJvdmlkZXI7XG5cbnR5cGUgRGVmYXVsdEFjdGlvbiA9IHtcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW07XG4gICAgZGVzY3JpcHRvcjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFRoZSBgVGFibGV2aWV3QnVpbGRlcmAgY2xhc3MgaXMgdXNlZCB0byBidWlsZCBhIHRhYmxldmlldyBjb25maWd1cmF0aW9uLlxuICogSXQgYWxsb3dzIHlvdSB0byBzZXQgdmFyaW91cyBvcHRpb25zIHN1Y2ggYXMgdGhlIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIsXG4gKiBkZWZhdWx0IGFjdGlvbnMsIGFuZCBjdXN0b20gYWN0aW9ucyBmb3IgdGhlIHRhYmxldmlldy5cbiAqXG4gKiBAdHlwZXBhcmFtIE1vZGVsIC0gVGhlIG1haW4gbW9kZWwgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBBUEkgc2VydmljZSB0eXBlLlxuICogQHR5cGVwYXJhbSBEZXNjcmlwdG9yIC0gVGhlIGRlc2NyaXB0b3IgdHlwZS5cbiAqIEB0eXBlcGFyYW0gRGF0YVByb3ZpZGVyIC0gVGhlIGRhdGEgcHJvdmlkZXIgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU29ydHMgLSBUaGUgc29ydCB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgc29ydCBrZXlzLlxuICogQHR5cGVwYXJhbSBGaWx0ZXJzIC0gVGhlIGZpbHRlciB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgZmlsdGVyIGtleXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBEZXNjcmlwdG9yIGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICBEYXRhUHJvdmlkZXIgZXh0ZW5kcyBJRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IE1vZGVsXG4+IHtcbiAgICBwcml2YXRlIGRlZmF1bHRBY3Rpb25zOiBEZWZhdWx0QWN0aW9uW10gPSB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9ucygpLm1hcChhID0+ICh7dHlwZTogYSwgZGVzY3JpcHRvcjogdW5kZWZpbmVkfSkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT5bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2Rlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gICAgICAgIHByaXZhdGUgX2RhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICAgICkge31cblxuICAgIHByaXZhdGUgcHJlcGFyZVNldHRlclBhcmFtcygpOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4ge1xuICAgICAgICByZXR1cm4ge2Rlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3IsIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLCBpbmplY3RvcjogdGhpcy5pbmplY3Rvcn07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgZGVzY3JpcHRvci4gSXQgc2hvdWxkIGFjY2VwdCBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZXNjcmlwdG9yKGZuOiBUdkJ1aWxkZXJEZXNjcmlwdG9yU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVzY3JpcHRvciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRqdXN0cyB0aGUgZGVzY3JpcHRvciB1c2luZyB0aGUgcHJvdmlkZWQgYWRqdXN0IGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoZGVzY3JpcHRvcjogRGVzY3JpcHRvcikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYERlc2NyaXB0b3JgLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFkanVzdERlc2NyaXB0b3IoYWRqdXN0Rm46IChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgICAgIGFkanVzdEZuKHRoaXMuX2Rlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkYXRhIHByb3ZpZGVyIGZvciB0aGUgVHZCdWlsZGVyIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBkYXRhIHByb3ZpZGVyLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVByb3ZpZGVyKGZuOiBUdkJ1aWxkZXJEYXRhUHJvdmlkZXJTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkanVzdHMgdGhlIGRhdGEgcHJvdmlkZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGFkanVzdCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGF0YSBwcm92aWRlci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgRGF0YVByb3ZpZGVyYC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhBZGp1c3REYXRhUHJvdmlkZXIoYWRqdXN0Rm46IChkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcikgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICBhZGp1c3RGbih0aGlzLl9kYXRhUHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3RzIHRoZSBkYXRhIHByb3ZpZGVyIGFuZC9vciBkZXNjcmlwdG9yIHVzaW5nIHRoZSBwcm92aWRlZCBhZGp1c3QgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRhdGEgcHJvdmlkZXIuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWRqdXN0KGFkanVzdEZuOiAocGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgYWRqdXN0Rm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGVzIGEgZmV0Y2ggZnVuY3Rpb24gZm9yIGEgZGF0YSBwcm92aWRlciBBUEkgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U2VydmljZUZufSBzZXJ2aWNlRm4gVGhlIGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZpY2UgY2xhc3MgdGhhdCBwZXJmb3JtcyB0aGUgZmV0Y2ggQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBmZXRjaCBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVNlcnZpY2VGZXRjaEZuPFNlcnZpY2VGbiBleHRlbmRzIENsYXNzRnVuY3Rpb25LZXlzV2l0aFBhcmFtQW5kUmV0dXJuVHlwZTxTZXJ2aWNlLCBhbnksIE9ic2VydmFibGU8TW9kZWw+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBpdGVtSWRQYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgSWRUeXBlPlxuICAgICk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVByb3ZpZGVyIGluc3RhbmNlb2YgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhGZXRjaCgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tpdGVtSWRQYXJhbU5hbWVdOiBpdGVtSWR9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGNyZWF0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBjcmVhdGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBVbmRlZmluZWQ8RWRpdE1vZGVsPj59IHNlcnZpY2VGbkl0ZW1QYXJhbU5hbWUgVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtIHVzZWQgYXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIGNyZWF0ZSBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEFkZE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0ncyBhZGQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlQ3JlYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBzZXJ2aWNlRm5JdGVtUGFyYW1OYW1lOiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIEFkZE1vZGVsPixcbiAgICAgICAgbWFwRmV0Y2hJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQWRkTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aENyZWF0ZSgoaXRlbSwgc2VydmljZSkgPT4gc2VydmljZVtzZXJ2aWNlRm5dKHtbc2VydmljZUZuSXRlbVBhcmFtTmFtZV06IGl0ZW19KSk7XG5cbiAgICAgICAgICAgIGlmIChtYXBGZXRjaEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShtYXBGZXRjaEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc29jaWF0ZXMgYW4gdXBkYXRlIGZ1bmN0aW9uIGZvciBhIGRhdGEgcHJvdmlkZXIgQVBJIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1NlcnZpY2VGbn0gc2VydmljZUZuIFRoZSBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2aWNlIGNsYXNzIHRoYXQgcGVyZm9ybXMgdGhlIHVwZGF0ZSBBUEkgY2FsbC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgYSBrZXkgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhIHBhcmFtZXRlciBhbmQgcmV0dXJuIGFuIE9ic2VydmFibGUuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIFVuZGVmaW5lZDxFZGl0TW9kZWw+Pn0gZm5JdGVtUGFyYW1OYW1lIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgaXRlbSB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiB1cGRhdGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT59IFtmbkl0ZW1JZFBhcmFtTmFtZV0gVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtSWQgdXNlZCBhcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdCBvYmplY3Qgb2YgdXBkYXRlIGZ1bmN0aW9uIG9uIEFQSSBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgRWRpdE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0nIGVkaXQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlVXBkYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1QYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgRWRpdE1vZGVsPixcbiAgICAgICAgZm5JdGVtSWRQYXJhbU5hbWU/OiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT4sXG4gICAgICAgIG1hcEZldGNoSXRlbT86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEVkaXRNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFQcm92aWRlciBpbnN0YW5jZW9mIFRhYmxldmlld0RhdGFQcm92aWRlckluc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoVXBkYXRlKChpZCwgaXRlbSwgc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1tmbkl0ZW1QYXJhbU5hbWVdOiBpdGVtfTtcbiAgICAgICAgICAgICAgICBpZiAoZm5JdGVtSWRQYXJhbU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ZuSXRlbUlkUGFyYW1OYW1lXSA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZVtzZXJ2aWNlRm5dKHBhcmFtcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG1hcEZldGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKG1hcEZldGNoSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGRlbGV0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBkZWxldGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBkZWxldGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlRGVsZXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1JZFBhcmFtTmFtZTogQ2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aERlbGV0ZSgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tmbkl0ZW1JZFBhcmFtTmFtZV06IGl0ZW1JZH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCB0aGUgZGVmYXVsdCB0YWJsZXZpZXcgYWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aE5vRGVmYXVsdEFjdGlvbnMoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZm9yRWFjaChhID0+IChhLmRlc2NyaXB0b3IgPSBudWxsKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGRlZmF1bHQgYWN0aW9ucyBzcGVjaWZpZWQgaW4gcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW119IHR5cGVzIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBhZGQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGVmYXVsdEFjdGlvbnMoLi4udHlwZXM6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdKTogdGhpcyB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbmQoYSA9PiBhLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbj8uZGVzY3JpcHRvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdG9yID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXX0gdHlwZXMgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhvdXREZWZhdWx0QWN0aW9ucyguLi50eXBlczogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnMuZmluZChhID0+IGEudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtfSB0eXBlIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBvdmVycmlkZS5cbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSAsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlZmF1bHRBY3Rpb25PdmVycmlkZTxBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgdHlwZTogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPE1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25SdW5JbnB1dCwgQWN0aW9uUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9ucy5maW5kKGEgPT4gYS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSkgPz8gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY3VzdG9tIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBvbiBvZiB7d2l0aEFjdGlvbk9uVGFibGV9LCB7d2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcn0sIHt3aXRoQWN0aW9uT25FZGl0RWRpdG9yfSBvciB7d2l0aEFjdGlvbk9uQWRkRWRpdG9yfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gdGFibGUgcm93IG9yIHRvcCAoaGVhZGVyIG9yIHRvb2xiYXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uVGFibGU8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgVGFibGVNb2RlbCB8IHVuZGVmaW5lZCA9IFRhYmxlTW9kZWwsIEFjdGlvblJ1blJlc3VsdCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgQWN0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gZm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2tcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gdGFibGUgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGRldGFpbHMgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uSW5wdXQgZXh0ZW5kcyBNb2RlbCA9IE1vZGVsLCBBY3Rpb25SZXN1bHQgPSBNb2RlbD4oXG4gICAgICAgIGZuOiBUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvbklucHV0LCBBY3Rpb25SZXN1bHQsIEFjdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gZGV0YWlscyAoJHthY3Rpb24ucG9zaXRpb259KSwgZGVmaW5lIHZhbGlkIHBvc2l0aW9uLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gZWRpdCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25FZGl0RWRpdG9yPEFjdGlvbk1vZGVsID0gTW9kZWwsIEFjdGlvblNlcnZpY2UgPSBTZXJ2aWNlLCBBY3Rpb25JbnB1dCBleHRlbmRzIEVkaXRNb2RlbCA9IEVkaXRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICBpZiAoIVtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0LCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHRdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEFjdGlvbiAke2FjdGlvbi5hY3Rpb25OYW1lTG9uZ30gY2FuIG5vdCBiZSBwb3NpdGlvbmVkIG9uIGVkaXQgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGFkZCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25BZGRFZGl0b3I8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgQWRkTW9kZWwgPSBBZGRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BRERdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gYWRkICgke2FjdGlvbi5wb3NpdGlvbn0pLCBkZWZpbmUgdmFsaWQgcG9zaXRpb24uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21BY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKlxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBJVGFibGV2aWV3LlxuICAgICAqIERPIE5PVCBDQUxMIHRoaXMgd2l0aGluIHRhYmxldmlldyBjcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24hXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtUYWJsZXZpZXdJbnB1dDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IC0gVGhlIGJ1aWx0IElUYWJsZXZpZXcgaW5zdGFuY2UuXG4gICAgICovXG4gICAgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiA8VGFibGV2aWV3SW5wdXQ8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+PntcbiAgICAgICAgICAgIGFjdGlvbnM6IHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+LFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZmlsdGVyKGEgPT4gYS5kZXNjcmlwdG9yICE9PSBudWxsKS5tYXAoYSA9PiBhLnR5cGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihhID0+IGEuZGVzY3JpcHRvciAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjYywgYSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2EudHlwZV06IGEuZGVzY3JpcHRvciFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJlY29yZDxudW1iZXIsIEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+Pnt9XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgKS5jb25jYXQodGhpcy5fY3VzdG9tQWN0aW9ucyksXG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIGRlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3JcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","import { Injector, inject } from '@angular/core';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { TableviewDescriptorInst } from '../descriptors/tableview.descriptor';\nimport { TableviewInputBuilder } from './tableview-input-builder';\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} [opts.service] - The class type of the service.\n * @param {TypeDescriptor<Sorts> | ModelDescriptor<Sorts>} [opts.sortsType] - Type of sorts\n * @param {TypeDescriptor<Filters> | ModelDescriptor<Filters>} [opts.filtersType] - Type of filters.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\nexport function tableviewMultiModel(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model, opts), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLL0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFDLHVCQUF1QixFQUF5QyxNQUFNLHFDQUFxQyxDQUFDO0FBRXBILE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWhFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUNyQixLQUE2QixFQUM3QixJQUlDLEVBQ0QsT0FFUztJQUVULE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBT3ZDLElBQUksdUJBQXVCLENBQXdCLEtBQUssQ0FBQyxFQUFFLElBQUkseUJBQXlCLENBQWlDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3SixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBUUQsTUFBTSxVQUFVLG1CQUFtQixDQVUvQixLQUE2QixFQUM3QixJQUF3RixFQUN4RixPQWFTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FZckMsSUFBSSx1QkFBdUIsQ0FBaUYsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUN4SCxJQUFJLHlCQUF5QixDQUFnRyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQzNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NlcnZpY2VDbGFzc09wdFR5cGUsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3QsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0Q29uc3RydWN0b3JPcHRzfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGV9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctZGVzY3JpcHRvci1maWVsZHMtbWFuYWdlLWhlbHBlci50eXBlJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXRCdWlsZGVyfSBmcm9tICcuL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGFibGV2aWV3IHdpdGggdGhlIGdpdmVuIG1vZGVsLCBzZXJ2aWNlLlxuICpcbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gbW9kZWwgLSBUaGUgbW9kZWwgZGVzY3JpcHRvci5cbiAqIEBwYXJhbSB7U2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPn0gW29wdHMuc2VydmljZV0gLSBUaGUgY2xhc3MgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPFNvcnRzPn0gW29wdHMuc29ydHNUeXBlXSAtIFR5cGUgb2Ygc29ydHNcbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz59IFtvcHRzLmZpbHRlcnNUeXBlXSAtIFR5cGUgb2YgZmlsdGVycy5cbiAqIEBwYXJhbSB7KGJ1aWxkZXI6IFRhYmxldmlld0J1aWxkZXIpID0+IHZvaWR9IFtidWlsZEZuXSAtIFRoZSBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHRhYmxldmlldyB1c2luZyB0aGUgcHJlcGFyZWQgYnVpbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHRhYmxldmlldyBpbnN0YW5jZSB3aXRoIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIgYW5kIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXc8TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgfSxcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8TW9kZWwsIFNlcnZpY2UsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPiwgU29ydHMsIEZpbHRlcnM+XG4gICAgKSA9PiB2b2lkXG4pIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFRhYmxldmlld0lucHV0QnVpbGRlcjxcbiAgICAgICAgTW9kZWwsXG4gICAgICAgIFNlcnZpY2UsXG4gICAgICAgIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sXG4gICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICAgICAgU29ydHMsXG4gICAgICAgIEZpbHRlcnNcbiAgICA+KG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKSwgbmV3IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPihvcHRzPy5zZXJ2aWNlKSwgaW5qZWN0KEluamVjdG9yKSk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG5cbnR5cGUgVGFibGV2aWV3TXVsdGlNb2RlbE9wdHM8U2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+ID0ge1xuICAgIHNlcnZpY2U/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbn0gJiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld011bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IFRhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGU8TW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdNdWx0aU1vZGVsT3B0czxTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgYnVpbGRGbj86IChcbiAgICAgICAgYnVpbGRlcjogVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICAgICAgTW9kZWwsXG4gICAgICAgICAgICBTZXJ2aWNlLFxuICAgICAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgICAgIFNvcnRzLFxuICAgICAgICAgICAgRmlsdGVycyxcbiAgICAgICAgICAgIFRhYmxlTW9kZWwsXG4gICAgICAgICAgICBBZGRNb2RlbCxcbiAgICAgICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgICAgIEZpZWxkc01vZGVsXG4gICAgICAgID5cbiAgICApID0+IHZvaWRcbikge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc09wdFR5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+LFxuICAgICAgICBTb3J0cyxcbiAgICAgICAgRmlsdGVycyxcbiAgICAgICAgVGFibGVNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwsXG4gICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgRmllbGRzTW9kZWxcbiAgICA+KFxuICAgICAgICBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPihtb2RlbCwgb3B0cyksXG4gICAgICAgIG5ldyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzT3B0VHlwZTxTZXJ2aWNlPiwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4ob3B0cz8uc2VydmljZSksXG4gICAgICAgIGluamVjdChJbmplY3RvcilcbiAgICApO1xuICAgIGJ1aWxkRm4/LihidWlsZGVyKTtcbiAgICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufVxuIl19","import { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nexport function tableviewDataProviderFromDescriptor(descriptor, serviceType) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst(serviceType)\n : new TableviewDataProviderInst(undefined);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBd0NwRixNQUFNLFVBQVUsbUNBQW1DLENBU2pELFVBQTBHLEVBQUUsV0FBMEI7SUFDcEksT0FBTyxPQUFPLFdBQVcsS0FBSyxXQUFXO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFrRyxXQUF3QyxDQUFDO1FBQzFLLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFvRixTQUFTLENBQUMsQ0FBQztBQUN0SSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZnJvbSBkZXNjcmlwdG9yLiBETyBOT1QgdXNlIGlmIHRoZSBtb2RlbCBpcyBjbGFzcywgYmVjYXVzZSB0aGUgdHlwZSAoZnJvbSBtb2RlbCBkZXNjcmlwdG9yKSB3aWxsIG5vdCBiZSBzZXQgaW4gZGF0YSBwcm92aWRlci5cbiAqXG4gKiBAcGFyYW0ge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgZGVzY3JpcHRvci5cbiAqXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPjtcbi8qKlxuICogQ3JlYXRlcyBhIGRhdGEgcHJvdmlkZXIgZm9yIGZyb20gZGVzY3JpcHRvci4gRE8gTk9UIHVzZSBpZiB0aGUgbW9kZWwgaXMgY2xhc3MsIGJlY2F1c2UgdGhlIHR5cGUgKGZyb20gbW9kZWwgZGVzY3JpcHRvcikgd2lsbCBub3QgYmUgc2V0IGluIGRhdGEgcHJvdmlkZXIuXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+fSBkZXNjcmlwdG9yIC0gVGhlIHRhYmxlIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2VDbGFzcyAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUuXG4gKlxuICogQHJldHVybiB7VGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBhbnksIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbCwgYW55PixcbiAgICBzZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RhdGFQcm92aWRlckZyb21EZXNjcmlwdG9yPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSBhbnksXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgTW9kZWwsXG4gICAgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT4sIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4oc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgOiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBTb3J0cywgRmlsdGVycywgdW5kZWZpbmVkLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+KHVuZGVmaW5lZCk7XG59XG4iXX0=","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\nexport * from './action/descriptors/editor-action-descriptor.factory';\nexport * from './action/descriptors/editor-action-editor-descriptor.factory';\nexport * from './action/descriptors/table-action-descriptor.factory';\nexport * from './action/descriptors/table-action-editor-descriptor.factory';\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-confirmation.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n// editor descriptors\nexport * from './editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper';\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n// editor models\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n// tableview helpers\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-input-builder';\n// tableview models\nexport * from './tableview/models/tableview-descriptor-fields-manage-helper.type';\nexport * from './tableview/models/tableview-descriptor-helper.type';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFDckIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2REFBNkQsQ0FBQztBQUU1RSxpQkFBaUI7QUFDakIsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCx5QkFBeUI7QUFDekIsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsZUFBZTtBQUNmLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkRBQTJELENBQUM7QUFFMUUsa0JBQWtCO0FBQ2xCLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSx3QkFBd0I7QUFDeEIsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLHFCQUFxQjtBQUNyQixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGdCQUFnQjtBQUNoQixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCwyQkFBMkI7QUFDM0IsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLHdCQUF3QjtBQUN4QixjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFFckUsb0JBQW9CO0FBQ3BCLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxtQkFBbUI7QUFDbkIsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFjdGlvbiBkZXNjcmlwdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2Rlc2NyaXB0b3JzL3RhYmxlLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyBhY3Rpb24gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycyc7XG5cbi8vIGFjdGlvbiBtb2RlbCBleGVjdXRpb25cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWV4ZWN1dGlvbi1lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS1zdGF0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL3ZpZXctY29udGFpbmVyLm1vZGVsJztcblxuLy8gYWN0aW9uIG1vZGVsXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb21wb25lbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZWRpdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcblxuLy8gYWN0aW9uIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuXG4vLyBlZGl0b3IgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyBlZGl0b3IgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWdyb3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbi8vIGVkaXRvciBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9maWVsZC1hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9mb3JtbHktb3B0aW9ucy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuXG4vLyB0YWJsZXZpZXcgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy9maWxlcy1leHBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLy8gdGFibGV2aWV3IG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWhlbHBlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLXRhYmxldmlldy1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtdGFibGV2aWV3LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["map"],"mappings":"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"}