@messaia/cdk 18.2.3 → 19.0.0-rc01
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/messaia-cdk.mjs +1147 -932
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/base/components/base.component.d.ts +1 -1
- package/lib/base/components/generic-embedded-list.component.d.ts +1 -1
- package/lib/base/components/generic-form-base.component.d.ts +1 -1
- package/lib/base/components/generic-form.component.d.ts +1 -1
- package/lib/base/components/generic-list.component.d.ts +7 -3
- package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
- package/lib/base/helpers/auth-helper.d.ts +1 -1
- package/lib/chips/components/chips.component.d.ts +5 -16
- package/lib/common/functions/utils.d.ts +1 -1
- package/lib/common/helpers/app-storage.d.ts +1 -1
- package/lib/common/styles/_layout.scss +1 -1
- package/lib/common/styles/_variables.scss +4 -25
- package/lib/common/styles/colors/_colors-dark.scss +2 -0
- package/lib/common/styles/colors/_colors.scss +4 -4
- package/lib/common/styles/core/_button.scss +7 -21
- package/lib/common/styles/core/_card.scss +13 -97
- package/lib/common/styles/core/_core.scss +8 -21
- package/lib/common/styles/core/_sidenav.scss +9 -7
- package/lib/common/styles/core/_structure.scss +4 -11
- package/lib/common/styles/font/_font.scss +5 -13
- package/lib/common/styles/m2/_common-theme.scss +10 -10
- package/lib/common/styles/m3/_common-theme.scss +27 -10
- package/lib/common/styles/platform.scss +10 -8
- package/lib/common/styles/utilities/_general.scss +55 -51
- package/lib/common/styles/utilities/_pull.scss +23 -30
- package/lib/common/styles/utilities/_push.scss +23 -30
- package/lib/common/styles/utilities/_size.scss +3 -3
- package/lib/common/styles/utilities/_utilities.scss +14 -14
- package/lib/common/theming/_m2-all-theme.scss +4 -11
- package/lib/common/theming/_m3-all-theme.scss +18 -0
- package/lib/form-validators/directives/base-directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
- package/lib/form-validators/services/rx-form-array.d.ts +2 -2
- package/lib/form-validators/util/reset-form.d.ts +3 -3
- package/lib/forms/directives/mat-form-field-editor.directive.d.ts +31 -28
- package/lib/forms/helpers/abstract-mat-form-field.d.ts +147 -91
- package/lib/forms/helpers/abstract-select-form-field.component.d.ts +144 -67
- package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
- package/lib/layout/_m2-layout-theme.scss +14 -50
- package/lib/layout/layout-toggle.class.d.ts +1 -1
- package/lib/list/components/list.component.d.ts +3 -15
- package/lib/select/components/select.component.d.ts +3 -16
- package/lib/table/components/filter-select/filter-select.component.d.ts +2 -3
- package/package.json +3 -5
- package/esm2022/lib/base/base.module.mjs +0 -114
- package/esm2022/lib/base/components/base.component.mjs +0 -904
- package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +0 -123
- package/esm2022/lib/base/components/generic-embedded-list.component.mjs +0 -197
- package/esm2022/lib/base/components/generic-form-base.component.mjs +0 -891
- package/esm2022/lib/base/components/generic-form.component.mjs +0 -44
- package/esm2022/lib/base/components/generic-list.component.mjs +0 -966
- package/esm2022/lib/base/components/generic-reactive-form.component.mjs +0 -101
- package/esm2022/lib/base/components/task-dialog/task-dialog.component.mjs +0 -147
- package/esm2022/lib/base/constants/common.mjs +0 -92
- package/esm2022/lib/base/constants/global-roles.mjs +0 -9
- package/esm2022/lib/base/enums/message-type.mjs +0 -7
- package/esm2022/lib/base/helpers/auth-helper.mjs +0 -53
- package/esm2022/lib/base/interceptors/base.interceptor.mjs +0 -168
- package/esm2022/lib/base/interceptors/caching-interceptor.mjs +0 -67
- package/esm2022/lib/base/interceptors/loading.interceptor.mjs +0 -64
- package/esm2022/lib/base/interfaces/ibase-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-form-base.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-reactive-form-base.mjs +0 -2
- package/esm2022/lib/base/models/auth-user.mjs +0 -18
- package/esm2022/lib/base/models/task-dialog-data.mjs +0 -85
- package/esm2022/lib/base/public_api.mjs +0 -2
- package/esm2022/lib/base/services/file.service.mjs +0 -18
- package/esm2022/lib/base/services/loading-screen.service.mjs +0 -45
- package/esm2022/lib/base/services/print.service.mjs +0 -41
- package/esm2022/lib/chips/chips.module.mjs +0 -77
- package/esm2022/lib/chips/components/chips.component.mjs +0 -702
- package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +0 -18
- package/esm2022/lib/chips/directives/chip.directive.mjs +0 -18
- package/esm2022/lib/chips/public_api.mjs +0 -3
- package/esm2022/lib/common/animations/collapse/collapse.animation.mjs +0 -33
- package/esm2022/lib/common/animations/common/interfaces.mjs +0 -2
- package/esm2022/lib/common/behaviors/constructor.mjs +0 -2
- package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +0 -41
- package/esm2022/lib/common/behaviors/disabled.mixin.mjs +0 -24
- package/esm2022/lib/common/common.module.mjs +0 -176
- package/esm2022/lib/common/constants/constants.mjs +0 -3
- package/esm2022/lib/common/directives/autofocus.directive.mjs +0 -62
- package/esm2022/lib/common/directives/delayed-hover.directive.mjs +0 -133
- package/esm2022/lib/common/directives/disable-control.directive.mjs +0 -35
- package/esm2022/lib/common/enums/app-event-type.mjs +0 -6
- package/esm2022/lib/common/enums/filter-glue.mjs +0 -16
- package/esm2022/lib/common/enums/filter-operator.mjs +0 -15
- package/esm2022/lib/common/enums/salutation.mjs +0 -7
- package/esm2022/lib/common/functions/decorators.mjs +0 -22
- package/esm2022/lib/common/functions/functions.mjs +0 -22
- package/esm2022/lib/common/functions/utils.mjs +0 -271
- package/esm2022/lib/common/helpers/app-storage.mjs +0 -77
- package/esm2022/lib/common/helpers/delegate.mjs +0 -2
- package/esm2022/lib/common/helpers/dynamic-builder.mjs +0 -52
- package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +0 -11
- package/esm2022/lib/common/models/action-item.mjs +0 -77
- package/esm2022/lib/common/models/app-event.mjs +0 -21
- package/esm2022/lib/common/models/app-setting.mjs +0 -92
- package/esm2022/lib/common/models/audit-entity.mjs +0 -53
- package/esm2022/lib/common/models/audit-user.mjs +0 -24
- package/esm2022/lib/common/models/base-entity.mjs +0 -40
- package/esm2022/lib/common/models/common-error.mjs +0 -29
- package/esm2022/lib/common/models/common-handler-context.mjs +0 -45
- package/esm2022/lib/common/models/displayname-number-projection.mjs +0 -56
- package/esm2022/lib/common/models/displayname-projection.mjs +0 -38
- package/esm2022/lib/common/models/entity.mjs +0 -2
- package/esm2022/lib/common/models/enum-item.mjs +0 -2
- package/esm2022/lib/common/models/enum-metadata.mjs +0 -44
- package/esm2022/lib/common/models/filter-field.mjs +0 -2
- package/esm2022/lib/common/models/filter.mjs +0 -2
- package/esm2022/lib/common/models/icommon-handler-context.mjs +0 -2
- package/esm2022/lib/common/models/icon.mjs +0 -42
- package/esm2022/lib/common/models/key-value.mjs +0 -11
- package/esm2022/lib/common/models/modifiable-entity.mjs +0 -22
- package/esm2022/lib/common/models/name-number-projection.mjs +0 -35
- package/esm2022/lib/common/models/name-projection.mjs +0 -25
- package/esm2022/lib/common/models/permission.mjs +0 -29
- package/esm2022/lib/common/models/save-action.mjs +0 -7
- package/esm2022/lib/common/models/suffix-button.mjs +0 -15
- package/esm2022/lib/common/models/title-projection.mjs +0 -25
- package/esm2022/lib/common/pipes/bind.mjs +0 -31
- package/esm2022/lib/common/pipes/data-source.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/enum.pipe.mjs +0 -41
- package/esm2022/lib/common/pipes/file-size.pipe.mjs +0 -35
- package/esm2022/lib/common/pipes/filter.pipe.mjs +0 -54
- package/esm2022/lib/common/pipes/first-letter.mjs +0 -24
- package/esm2022/lib/common/pipes/form-array.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-control.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-group.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/func.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/join.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/keys.mjs +0 -18
- package/esm2022/lib/common/pipes/map.pipe.mjs +0 -48
- package/esm2022/lib/common/pipes/month-name.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/nested-property.mjs +0 -29
- package/esm2022/lib/common/pipes/only-number.mjs +0 -58
- package/esm2022/lib/common/pipes/order.pipe.mjs +0 -269
- package/esm2022/lib/common/pipes/placeholder.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/property-join.pipe.mjs +0 -27
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -32
- package/esm2022/lib/common/pipes/split.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/time.pipe.mjs +0 -21
- package/esm2022/lib/common/pipes/titlecase.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/truncate.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/values.mjs +0 -14
- package/esm2022/lib/common/public_api.mjs +0 -41
- package/esm2022/lib/common/services/base.service.mjs +0 -19
- package/esm2022/lib/common/services/context-helper.mjs +0 -17
- package/esm2022/lib/common/services/enum.service.mjs +0 -81
- package/esm2022/lib/common/services/event-queue.service.mjs +0 -31
- package/esm2022/lib/common/services/service-locator.mjs +0 -25
- package/esm2022/lib/common/templates/templates.mjs +0 -87
- package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +0 -46
- package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -60
- package/esm2022/lib/dialogs/dialog.component.mjs +0 -59
- package/esm2022/lib/dialogs/dialogs.module.mjs +0 -72
- package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -44
- package/esm2022/lib/dialogs/public_api.mjs +0 -2
- package/esm2022/lib/dialogs/services/dialog.service.mjs +0 -154
- package/esm2022/lib/file/file-input.component.mjs +0 -334
- package/esm2022/lib/file/file.module.mjs +0 -37
- package/esm2022/lib/file/public_api.mjs +0 -2
- package/esm2022/lib/form-validators/abstract/typed-form.mjs +0 -13
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +0 -33
- package/esm2022/lib/form-validators/const/app-validators.const.mjs +0 -68
- package/esm2022/lib/form-validators/const/app.const.mjs +0 -65
- package/esm2022/lib/form-validators/const/config-names.const.mjs +0 -33
- package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +0 -35
- package/esm2022/lib/form-validators/const/decorators.const.mjs +0 -23
- package/esm2022/lib/form-validators/const/events.const.mjs +0 -53
- package/esm2022/lib/form-validators/const/html-elements.const.mjs +0 -25
- package/esm2022/lib/form-validators/const/iban-country-wise-regex.const.mjs +0 -80
- package/esm2022/lib/form-validators/const/index.mjs +0 -6
- package/esm2022/lib/form-validators/const/operators.const.mjs +0 -7
- package/esm2022/lib/form-validators/const/validation-alphabet-locale.const.mjs +0 -9
- package/esm2022/lib/form-validators/const/validator.const.mjs +0 -29
- package/esm2022/lib/form-validators/core/annotation-types.mjs +0 -75
- package/esm2022/lib/form-validators/core/default-container.mjs +0 -500
- package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/and.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/async.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/date.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/different.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/email.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/even.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/file.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/image.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/index.mjs +0 -93
- package/esm2022/lib/form-validators/decorators/json.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/model.decorator.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/not.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/or.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/password.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/port.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/range.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/required.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/time.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/url.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/directives/base-directive.mjs +0 -75
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +0 -55
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +0 -36
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +0 -234
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +0 -40
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +0 -76
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +0 -60
- package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +0 -122
- package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +0 -74
- package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +0 -394
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +0 -198
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +0 -134
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +0 -453
- package/esm2022/lib/form-validators/domain/form-data.mjs +0 -93
- package/esm2022/lib/form-validators/enums/error-message-binding-strategy.mjs +0 -11
- package/esm2022/lib/form-validators/enums/index.mjs +0 -5
- package/esm2022/lib/form-validators/enums/ip-version.mjs +0 -7
- package/esm2022/lib/form-validators/enums/numeric-value-type.mjs +0 -7
- package/esm2022/lib/form-validators/enums/reset-type.mjs +0 -10
- package/esm2022/lib/form-validators/enums/url-validation-type.mjs +0 -7
- package/esm2022/lib/form-validators/models/config/alpha-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/array-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config-fn.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/choice-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compare-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/component-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compose-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/contains-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/credit-card-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/custom-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/default-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/digit-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/disable-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/element-class-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/email-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/error-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/extension-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/factor-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/field-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/file-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/hex-color-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/iban-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/image-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/index.mjs +0 -35
- package/esm2022/lib/form-validators/models/config/ip-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/logical-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/mask-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/max-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/message-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/min-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/model-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/number-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/numeric-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/password-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/pattern-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/prop-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/props-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/range-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/relational-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/required-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/rule-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/sanitize-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/size-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-comparison-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-value-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/time-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/todate-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/unique-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/update-on-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/url-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/control-info.mjs +0 -2
- package/esm2022/lib/form-validators/models/data-sanitizer.mjs +0 -2
- package/esm2022/lib/form-validators/models/decorator-configuration.mjs +0 -2
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +0 -58
- package/esm2022/lib/form-validators/models/index.mjs +0 -3
- package/esm2022/lib/form-validators/models/instance-container.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/auto-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/form-data-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/i-abstract-control.mjs +0 -30
- package/esm2022/lib/form-validators/models/interface/i-form-group.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/instance-argument.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/options.mjs +0 -2
- package/esm2022/lib/form-validators/models/password-validation.model.mjs +0 -2
- package/esm2022/lib/form-validators/models/prop-validation-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/property-info.mjs +0 -2
- package/esm2022/lib/form-validators/public_api.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +0 -33
- package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +0 -45
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +0 -32
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +0 -63
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +0 -48
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +0 -23
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +0 -40
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +0 -37
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +0 -52
- package/esm2022/lib/form-validators/reactive-form-validators/index.mjs +0 -66
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +0 -18
- package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +0 -14
- package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +0 -24
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +0 -35
- package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +0 -27
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +0 -77
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +0 -28
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +0 -220
- package/esm2022/lib/form-validators/services/entity.service.mjs +0 -76
- package/esm2022/lib/form-validators/services/form-control.mjs +0 -370
- package/esm2022/lib/form-validators/services/form-group.mjs +0 -2
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +0 -52
- package/esm2022/lib/form-validators/services/rx-form-array.mjs +0 -114
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +0 -1035
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +0 -451
- package/esm2022/lib/form-validators/services/typed-form-builder.mjs +0 -25
- package/esm2022/lib/form-validators/util/alphabet-regex.locale.mjs +0 -29
- package/esm2022/lib/form-validators/util/app-util.mjs +0 -161
- package/esm2022/lib/form-validators/util/check-length.mjs +0 -11
- package/esm2022/lib/form-validators/util/config-provider.mjs +0 -37
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +0 -52
- package/esm2022/lib/form-validators/util/date-provider.mjs +0 -108
- package/esm2022/lib/form-validators/util/form-const.mjs +0 -3
- package/esm2022/lib/form-validators/util/form-provider.mjs +0 -87
- package/esm2022/lib/form-validators/util/index.mjs +0 -7
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +0 -63
- package/esm2022/lib/form-validators/util/ip-checker.mjs +0 -19
- package/esm2022/lib/form-validators/util/linq.mjs +0 -157
- package/esm2022/lib/form-validators/util/object-maker.mjs +0 -68
- package/esm2022/lib/form-validators/util/reactive-form-config.mjs +0 -25
- package/esm2022/lib/form-validators/util/regex-rules.mjs +0 -37
- package/esm2022/lib/form-validators/util/regex-validator.mjs +0 -74
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +0 -92
- package/esm2022/lib/form-validators/util/reset-form.mjs +0 -57
- package/esm2022/lib/form-validators/util/sanitizers.mjs +0 -140
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +0 -50
- package/esm2022/lib/form-validators/util/type.mjs +0 -2
- package/esm2022/lib/form-validators/util/validator-value-checker.mjs +0 -21
- package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +0 -34
- package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/index.mjs +0 -68
- package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/rxweb-validators.mjs +0 -108
- package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +0 -71
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +0 -33
- package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +0 -84
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +0 -602
- package/esm2022/lib/forms/constants/constants.mjs +0 -4
- package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +0 -197
- package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +0 -34
- package/esm2022/lib/forms/directives/parse-decimal-directive.mjs +0 -87
- package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +0 -35
- package/esm2022/lib/forms/enums/form-field-type.mjs +0 -23
- package/esm2022/lib/forms/forms.module.mjs +0 -168
- package/esm2022/lib/forms/functions/decorators.mjs +0 -136
- package/esm2022/lib/forms/functions/functions.mjs +0 -72
- package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +0 -308
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +0 -492
- package/esm2022/lib/forms/helpers/value-accessor-base.mjs +0 -146
- package/esm2022/lib/forms/models/form-definition.mjs +0 -63
- package/esm2022/lib/forms/models/form-field-definition.mjs +0 -468
- package/esm2022/lib/forms/models/form-field-group-definition.mjs +0 -55
- package/esm2022/lib/forms/pipes/field-func.pipe.mjs +0 -23
- package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +0 -34
- package/esm2022/lib/forms/public_api.mjs +0 -5
- package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +0 -25
- package/esm2022/lib/forms/validators/equal-validator.directive.mjs +0 -69
- package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +0 -41
- package/esm2022/lib/forms/validators/unique-validator-directive.mjs +0 -88
- package/esm2022/lib/http/http.module.mjs +0 -15
- package/esm2022/lib/http/models/response.mjs +0 -24
- package/esm2022/lib/http/public_api.mjs +0 -2
- package/esm2022/lib/http/services/generic.service.mjs +0 -331
- package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +0 -103
- package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +0 -49
- package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +0 -193
- package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +0 -37
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +0 -150
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +0 -108
- package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +0 -146
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +0 -141
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +0 -105
- package/esm2022/lib/layout/layout-toggle.class.mjs +0 -89
- package/esm2022/lib/layout/layout.component.mjs +0 -230
- package/esm2022/lib/layout/layout.directives.mjs +0 -81
- package/esm2022/lib/layout/layout.module.mjs +0 -144
- package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +0 -47
- package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +0 -275
- package/esm2022/lib/layout/public_api.mjs +0 -2
- package/esm2022/lib/list/components/list.component.mjs +0 -78
- package/esm2022/lib/list/directives/vd-list-option.directive.mjs +0 -23
- package/esm2022/lib/list/list.module.mjs +0 -36
- package/esm2022/lib/list/public_api.mjs +0 -3
- package/esm2022/lib/media/directives/media-toggle.directive.mjs +0 -154
- package/esm2022/lib/media/media.module.mjs +0 -35
- package/esm2022/lib/media/public_api.mjs +0 -2
- package/esm2022/lib/media/services/media.service.mjs +0 -110
- package/esm2022/lib/menu/components/menu.component.mjs +0 -95
- package/esm2022/lib/menu/enums/menu-scope.mjs +0 -6
- package/esm2022/lib/menu/menu.module.mjs +0 -64
- package/esm2022/lib/menu/models/menu-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item.mjs +0 -351
- package/esm2022/lib/menu/models/menu-settings.mjs +0 -13
- package/esm2022/lib/menu/models/menu.mjs +0 -224
- package/esm2022/lib/menu/public_api.mjs +0 -3
- package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +0 -51
- package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +0 -24
- package/esm2022/lib/menu/services/menu-items.service.mjs +0 -19
- package/esm2022/lib/menu/services/menu.resolve.mjs +0 -68
- package/esm2022/lib/menu/services/menu.service.mjs +0 -19
- package/esm2022/lib/search/public_api.mjs +0 -2
- package/esm2022/lib/search/search.module.mjs +0 -33
- package/esm2022/lib/select/components/select.component.mjs +0 -215
- package/esm2022/lib/select/directives/vd-select-option.directive.mjs +0 -23
- package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +0 -23
- package/esm2022/lib/select/public_api.mjs +0 -4
- package/esm2022/lib/select/select.module.mjs +0 -48
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +0 -810
- package/esm2022/lib/table/components/filter-clear/filter-clear.component.mjs +0 -36
- package/esm2022/lib/table/components/filter-date/filter-date.component.mjs +0 -146
- package/esm2022/lib/table/components/filter-input/filter-input.component.mjs +0 -198
- package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +0 -375
- package/esm2022/lib/table/constants/constants.mjs +0 -3
- package/esm2022/lib/table/directives/data-source-filter.directive.mjs +0 -49
- package/esm2022/lib/table/directives/vd-table-field.directive.mjs +0 -35
- package/esm2022/lib/table/enums/grid.mjs +0 -12
- package/esm2022/lib/table/enums/table-column-type.mjs +0 -17
- package/esm2022/lib/table/functions/decorators.mjs +0 -163
- package/esm2022/lib/table/functions/functions.mjs +0 -28
- package/esm2022/lib/table/models/facet-value.mjs +0 -47
- package/esm2022/lib/table/models/facet.mjs +0 -48
- package/esm2022/lib/table/models/pagination.mjs +0 -27
- package/esm2022/lib/table/models/table-column-config.mjs +0 -128
- package/esm2022/lib/table/models/table-column.mjs +0 -270
- package/esm2022/lib/table/models/table-config.mjs +0 -41
- package/esm2022/lib/table/models/table-definition.mjs +0 -110
- package/esm2022/lib/table/models/table-query-config.mjs +0 -26
- package/esm2022/lib/table/paginator-intl.mjs +0 -41
- package/esm2022/lib/table/public_api.mjs +0 -2
- package/esm2022/lib/table/table.data-source.mjs +0 -326
- package/esm2022/lib/table/table.module.mjs +0 -165
- package/esm2022/lib/table/table.static-data-source.mjs +0 -198
- package/esm2022/messaia-cdk.mjs +0 -5
- package/esm2022/public_api.mjs +0 -19
- package/lib/common/styles/_elevation.scss +0 -147
- package/lib/common/styles/_rtl.scss +0 -28
- package/lib/common/styles/_styles.scss +0 -12
- package/lib/common/styles/_theme-functions.scss +0 -4
- package/lib/common/styles/_typography.scss +0 -76
- package/lib/common/styles/core/_content.scss +0 -42
- package/lib/common/styles/core/_divider.scss +0 -14
- package/lib/common/styles/core/_icons.scss +0 -27
- package/lib/common/styles/core/_list.scss +0 -8
- package/lib/common/styles/core/_toolbar.scss +0 -31
- package/lib/common/styles/core/_whiteframe.scss +0 -111
- package/lib/common/styles/m2/_theme-functions.scss +0 -21
- package/lib/common/styles/m3/_theme-functions.scss +0 -21
- package/lib/common/theming/_all-theme.scss +0 -27
- package/lib/common/typography/_all-typography.scss +0 -33
|
@@ -1,500 +0,0 @@
|
|
|
1
|
-
import { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY, RXCODE } from "../const";
|
|
2
|
-
import { DECORATORS } from "../const/decorators.const";
|
|
3
|
-
import { Linq } from "../util/linq";
|
|
4
|
-
import { AnnotationTypes } from "./annotation-types";
|
|
5
|
-
/**
|
|
6
|
-
* Represents a default container for managing instance configurations.
|
|
7
|
-
*
|
|
8
|
-
* Manages the configuration and instantiation of validation decorators, sanitizers, and other properties for classes.
|
|
9
|
-
* This class serves as a container for managing instance-related configurations and properties.
|
|
10
|
-
*/
|
|
11
|
-
export class DefaultContainer {
|
|
12
|
-
/**
|
|
13
|
-
* Represents whether the container is operating in experimental mode.
|
|
14
|
-
* Experimental mode may introduce features that are still under development or testing.
|
|
15
|
-
*/
|
|
16
|
-
isExperimental = false;
|
|
17
|
-
/**
|
|
18
|
-
* Array containing instances and their configurations.
|
|
19
|
-
* Each element represents an instance of the application with associated properties and decorators.
|
|
20
|
-
*/
|
|
21
|
-
instances = [];
|
|
22
|
-
/**
|
|
23
|
-
* Counter used for generating unique identifiers for model instances.
|
|
24
|
-
* This counter is incremented each time a new model instance is added to the container.
|
|
25
|
-
*/
|
|
26
|
-
modelIncrementCount = 0;
|
|
27
|
-
/**
|
|
28
|
-
* Retrieves an instance container based on the provided instance function.
|
|
29
|
-
* @param instanceFunc The instance function.
|
|
30
|
-
* @returns The instance container.
|
|
31
|
-
*/
|
|
32
|
-
get(instanceFunc) {
|
|
33
|
-
return this.instances.filter(instance => instance.instance === instanceFunc)[0];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Retrieves or creates an instance container based on the provided parameters.
|
|
37
|
-
* @param target The target.
|
|
38
|
-
* @param parameterIndex The parameter index.
|
|
39
|
-
* @param propertyKey The property key.
|
|
40
|
-
* @param decoratorType The decorator type.
|
|
41
|
-
* @returns The instance container.
|
|
42
|
-
*/
|
|
43
|
-
getInstance(target, parameterIndex, propertyKey, decoratorType) {
|
|
44
|
-
/* Determine if the property key is defined */
|
|
45
|
-
let isPropertyKey = (propertyKey != undefined);
|
|
46
|
-
/* Get the instance function based on whether the property key is defined */
|
|
47
|
-
let instanceFunc = !isPropertyKey ? target : target.constructor;
|
|
48
|
-
/* Filter instances to find the one matching the instance function */
|
|
49
|
-
let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];
|
|
50
|
-
/* If no instance is found, create a new instance container */
|
|
51
|
-
if (!instance) {
|
|
52
|
-
instance = this.addInstanceContainer(instanceFunc);
|
|
53
|
-
}
|
|
54
|
-
/* Return the instance container */
|
|
55
|
-
return instance;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Adds property configurations to the instance container.
|
|
59
|
-
* @param target The target.
|
|
60
|
-
* @param configs The configurations.
|
|
61
|
-
*/
|
|
62
|
-
addPropsConfig(target, configs) {
|
|
63
|
-
/* Find the instance container associated with the target */
|
|
64
|
-
let instanceContainer = this.instances.find(instance => instance.instance === target);
|
|
65
|
-
/* Check if the instance container exists */
|
|
66
|
-
if (instanceContainer) {
|
|
67
|
-
/* Iterate through the provided configurations or an empty array if none are provided */
|
|
68
|
-
for (let config of configs ?? []) {
|
|
69
|
-
/* Iterate through the property names in the configuration */
|
|
70
|
-
for (let prop of config.propNames) {
|
|
71
|
-
/* Find the property info in the instance container's properties */
|
|
72
|
-
let propertyInfo = instanceContainer.properties?.find(t => t.name == prop && (t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY));
|
|
73
|
-
/* If the property info exists, add property configuration */
|
|
74
|
-
if (propertyInfo) {
|
|
75
|
-
this.addPropConfig(target, [propertyInfo], config);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
/* If the property name is ':all:', add property configuration for all properties */
|
|
79
|
-
if (prop === ":all:") {
|
|
80
|
-
this.addPropConfig(target, instanceContainer.properties?.filter(t => t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY), config);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else if (configs === undefined) {
|
|
87
|
-
/* If the instance container does not exist and no configurations are provided, create a new instance container */
|
|
88
|
-
this.addInstanceContainer(target);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Adds a property configuration to the instance container.
|
|
93
|
-
* @param target The target.
|
|
94
|
-
* @param properties The properties.
|
|
95
|
-
* @param config The configuration.
|
|
96
|
-
*/
|
|
97
|
-
addPropConfig(target, properties, config) {
|
|
98
|
-
/* Iterates through the provided properties and applies configurations based on the provided config object */
|
|
99
|
-
for (var propertyInfo of properties) {
|
|
100
|
-
let excludeProp = false;
|
|
101
|
-
/* Check if excludePropNames exist in the config */
|
|
102
|
-
if (config.excludePropNames) {
|
|
103
|
-
/* Check if the current property should be excluded based on its name */
|
|
104
|
-
excludeProp = config.excludePropNames.find(t => t == propertyInfo.name) !== undefined;
|
|
105
|
-
}
|
|
106
|
-
/* If the property should not be excluded */
|
|
107
|
-
if (!excludeProp) {
|
|
108
|
-
/* Apply validation configurations */
|
|
109
|
-
if (config.validationConfig) {
|
|
110
|
-
/* Iterate through the validation configurations */
|
|
111
|
-
for (let typeName in config.validationConfig) {
|
|
112
|
-
/* Initialize validation for the property */
|
|
113
|
-
this.init({ constructor: target }, 0, propertyInfo.name, typeName, config.validationConfig[typeName] === true ? undefined : config.validationConfig[typeName], false);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/* Apply error decorator configuration */
|
|
117
|
-
if (config.error) {
|
|
118
|
-
this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.error, DECORATORS.error);
|
|
119
|
-
}
|
|
120
|
-
/* Apply disable decorator configuration */
|
|
121
|
-
if (config.disable) {
|
|
122
|
-
this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.disable, DECORATORS.disabled);
|
|
123
|
-
}
|
|
124
|
-
/* Apply elementClass decorator configuration */
|
|
125
|
-
if (config.elementClass) {
|
|
126
|
-
this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.elementClass, DECORATORS.elementClass);
|
|
127
|
-
}
|
|
128
|
-
/* Apply ignore configuration */
|
|
129
|
-
if (config.ignore) {
|
|
130
|
-
propertyInfo.ignore = config.ignore;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Adds a sanitizer to the instance container.
|
|
137
|
-
* @param target The target.
|
|
138
|
-
* @param parameterIndex The parameter index.
|
|
139
|
-
* @param propertyKey The property key.
|
|
140
|
-
* @param decoratorType The decorator type.
|
|
141
|
-
* @param value The value.
|
|
142
|
-
*/
|
|
143
|
-
addSanitizer(target, parameterIndex, propertyKey, decoratorType, value) {
|
|
144
|
-
/* Retrieves the instance container based on the provided parameters and adds a sanitizer configuration to it */
|
|
145
|
-
let instance = this.getInstance(target, parameterIndex, propertyKey, decoratorType);
|
|
146
|
-
if (instance) {
|
|
147
|
-
/* Check if the sanitizers object for the property exists */
|
|
148
|
-
if (!instance.sanitizers[propertyKey]) {
|
|
149
|
-
instance.sanitizers[propertyKey] = [];
|
|
150
|
-
}
|
|
151
|
-
/* Push the sanitizer configuration to the sanitizers object */
|
|
152
|
-
instance.sanitizers[propertyKey].push({ name: decoratorType, config: value });
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Adds a decorator configuration to the instance container.
|
|
157
|
-
* @param target The target.
|
|
158
|
-
* @param parameterIndex The parameter index.
|
|
159
|
-
* @param propertyKey The property key.
|
|
160
|
-
* @param config The configuration.
|
|
161
|
-
* @param decoratorType The decorator type.
|
|
162
|
-
*/
|
|
163
|
-
addDecoratorConfig(target, parameterIndex, propertyKey, config, decoratorType) {
|
|
164
|
-
/* Determine if the property key is defined */
|
|
165
|
-
let isPropertyKey = (propertyKey != undefined);
|
|
166
|
-
/* Determine the function or constructor to be used as instanceFunc */
|
|
167
|
-
let instanceFunc = !isPropertyKey ? target : target.constructor;
|
|
168
|
-
/* Find the instance container based on instanceFunc */
|
|
169
|
-
let instance = this.instances.find(instance => instance.instance === instanceFunc);
|
|
170
|
-
/* If the instance container doesn't exist, create a new one */
|
|
171
|
-
if (!instance) {
|
|
172
|
-
instance = this.addInstanceContainer(instanceFunc);
|
|
173
|
-
}
|
|
174
|
-
/* Add conditional expressions to the non-validation decorators of the instance container */
|
|
175
|
-
(instance?.nonValidationDecorators)[decoratorType].conditionalExpressions[propertyKey] = config.conditionalExpression;
|
|
176
|
-
/* Extract columns from the conditional expression */
|
|
177
|
-
let columns = Linq.expressionColumns(config.conditionalExpression, true);
|
|
178
|
-
/* Iterate over each column */
|
|
179
|
-
columns.forEach(column => {
|
|
180
|
-
if (column.argumentIndex !== -1) {
|
|
181
|
-
/* Construct the column name based on whether objectPropName is defined */
|
|
182
|
-
let columnName = (!column.objectPropName) ? `${column.propName}${RXCODE}${column.argumentIndex}` : `${column.objectPropName}.${column.propName}${RXCODE}${column.argumentIndex}`;
|
|
183
|
-
/* Check if the column exists in changeDetection and initialize it if necessary */
|
|
184
|
-
if (!(instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName]) {
|
|
185
|
-
(instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName] = [];
|
|
186
|
-
}
|
|
187
|
-
/* Add the property key to the changeDetection column */
|
|
188
|
-
let disabledColumns = (instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName];
|
|
189
|
-
if (disabledColumns.indexOf(columnName) === -1) {
|
|
190
|
-
disabledColumns.push(propertyKey);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
/* Handle the controlProp if argumentIndex is -1 */
|
|
195
|
-
if (!(instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey]) {
|
|
196
|
-
(instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey] = {};
|
|
197
|
-
}
|
|
198
|
-
/* Set the column name to true in controlProp */
|
|
199
|
-
(instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey][column.propName.replace(";", "")] = true;
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Initializes a decorator configuration.
|
|
205
|
-
* @param target The target.
|
|
206
|
-
* @param parameterIndex The parameter index.
|
|
207
|
-
* @param propertyKey The property key.
|
|
208
|
-
* @param annotationType The annotation type.
|
|
209
|
-
* @param config The configuration.
|
|
210
|
-
* @param isAsync Indicates whether it's an asynchronous operation.
|
|
211
|
-
*/
|
|
212
|
-
init(target, parameterIndex, propertyKey, annotationType, config, isAsync) {
|
|
213
|
-
/* Define the decorator configuration */
|
|
214
|
-
var decoratorConfiguration = {
|
|
215
|
-
propertyIndex: parameterIndex,
|
|
216
|
-
propertyName: propertyKey,
|
|
217
|
-
annotationType: annotationType,
|
|
218
|
-
config: config,
|
|
219
|
-
isAsync: isAsync,
|
|
220
|
-
isValidator: annotationType !== "updateOn"
|
|
221
|
-
};
|
|
222
|
-
/* Determine if the property key is defined */
|
|
223
|
-
let isPropertyKey = (propertyKey != undefined);
|
|
224
|
-
/* Determine the function or constructor to be used as instanceFunc */
|
|
225
|
-
this.addAnnotation(!isPropertyKey ? target : target.constructor, decoratorConfiguration);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Initializes a property object.
|
|
229
|
-
* @param name The name.
|
|
230
|
-
* @param propertyType The property type.
|
|
231
|
-
* @param entity The entity.
|
|
232
|
-
* @param target The target.
|
|
233
|
-
* @param config The configuration.
|
|
234
|
-
*/
|
|
235
|
-
initPropertyObject(name, propertyType, entity, target, config) {
|
|
236
|
-
/* Define the property information */
|
|
237
|
-
var propertyInfo = {
|
|
238
|
-
name: name,
|
|
239
|
-
propertyType: propertyType,
|
|
240
|
-
entity: entity,
|
|
241
|
-
dataPropertyName: config ? config.name : undefined,
|
|
242
|
-
entityProvider: config ? config.entityProvider : undefined
|
|
243
|
-
};
|
|
244
|
-
/* Add the property to the target's constructor */
|
|
245
|
-
this.addProperty(target.constructor, propertyInfo);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Adds an instance container to the list of instances.
|
|
249
|
-
* @param instanceFunc The instance function.
|
|
250
|
-
* @returns The added instance container.
|
|
251
|
-
*/
|
|
252
|
-
addInstanceContainer(instanceFunc) {
|
|
253
|
-
/* Define an instance container */
|
|
254
|
-
let instanceContainer = {
|
|
255
|
-
instance: instanceFunc, /* Instance associated with the container */
|
|
256
|
-
propertyAnnotations: [], /* Annotations for the properties */
|
|
257
|
-
properties: [], /* Properties associated with the instance */
|
|
258
|
-
nonValidationDecorators: {
|
|
259
|
-
/* Disabled decorators */
|
|
260
|
-
disabled: {
|
|
261
|
-
conditionalExpressions: {}, /* Conditional expressions for disabled decorators */
|
|
262
|
-
changeDetection: {}, /* Change detection for disabled decorators */
|
|
263
|
-
controlProp: {} /* Control properties for disabled decorators */
|
|
264
|
-
},
|
|
265
|
-
/* Error decorators */
|
|
266
|
-
error: {
|
|
267
|
-
conditionalExpressions: {}, /* Conditional expressions for error decorators */
|
|
268
|
-
changeDetection: {}, /* Change detection for error decorators */
|
|
269
|
-
controlProp: {} /* Control properties for error decorators */
|
|
270
|
-
},
|
|
271
|
-
/* Element class decorators */
|
|
272
|
-
elementClass: {
|
|
273
|
-
conditionalExpressions: {}, /* Conditional expressions for element class decorators */
|
|
274
|
-
changeDetection: {}, /* Change detection for element class decorators */
|
|
275
|
-
controlProp: {} /* Control properties for element class decorators */
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
/* Sanitizers associated with the instance */
|
|
279
|
-
sanitizers: {}
|
|
280
|
-
};
|
|
281
|
-
/* Add the instance container to the instances array */
|
|
282
|
-
this.instances.push(instanceContainer);
|
|
283
|
-
/* Return the created instance container */
|
|
284
|
-
return instanceContainer;
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Adds a property to the instance container.
|
|
288
|
-
* @param instanceFunc The instance function.
|
|
289
|
-
* @param propertyInfo The property information.
|
|
290
|
-
* @param isFromAnnotation Indicates whether it's added from an annotation.
|
|
291
|
-
*/
|
|
292
|
-
addProperty(instanceFunc, propertyInfo, isFromAnnotation = false) {
|
|
293
|
-
/* Find the instance in the instances array */
|
|
294
|
-
let instance = this.instances.find(instance => instance.instance === instanceFunc);
|
|
295
|
-
/* Check if the instance exists */
|
|
296
|
-
if (instance) {
|
|
297
|
-
/* Add property information to the existing instance */
|
|
298
|
-
this.addPropertyInfo(instance, propertyInfo, !isFromAnnotation);
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
/* Create a new instance container if it doesn't exist */
|
|
302
|
-
instance = this.addInstanceContainer(instanceFunc);
|
|
303
|
-
/* Add property information to the newly created instance */
|
|
304
|
-
this.addPropertyInfo(instance, propertyInfo);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Adds property information to the instance container.
|
|
309
|
-
* @param instance The instance container.
|
|
310
|
-
* @param propertyInfo The property information.
|
|
311
|
-
* @param isAddProperty Indicates whether it's added as a new property.
|
|
312
|
-
*/
|
|
313
|
-
addPropertyInfo(instance, propertyInfo, isAddProperty = false) {
|
|
314
|
-
/* Find the property with the same name in the instance's properties */
|
|
315
|
-
var property = instance.properties?.find(t => t.name == propertyInfo.name);
|
|
316
|
-
/* Check if the property doesn't already exist */
|
|
317
|
-
if (!property) {
|
|
318
|
-
/* Add the property information to the instance's properties */
|
|
319
|
-
instance.properties?.push(propertyInfo);
|
|
320
|
-
}
|
|
321
|
-
else if (isAddProperty) {
|
|
322
|
-
/* Update property information if requested */
|
|
323
|
-
property.dataPropertyName = propertyInfo.dataPropertyName;
|
|
324
|
-
property.defaultValue = propertyInfo.defaultValue;
|
|
325
|
-
property.valuePath = propertyInfo.valuePath;
|
|
326
|
-
property.value = propertyInfo.value;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Adds an annotation to the instance container.
|
|
331
|
-
* @param instanceFunc The instance function.
|
|
332
|
-
* @param decoratorConfiguration The decorator configuration.
|
|
333
|
-
*/
|
|
334
|
-
addAnnotation(instanceFunc, decoratorConfiguration) {
|
|
335
|
-
/* Add property information to the instance */
|
|
336
|
-
this.addProperty(instanceFunc, { propertyType: PROPERTY, name: decoratorConfiguration.propertyName }, true);
|
|
337
|
-
/* Find or create the instance in the instances array */
|
|
338
|
-
let instance = this.instances.find(instance => instance.instance === instanceFunc);
|
|
339
|
-
if (instance) {
|
|
340
|
-
/* Add the decorator configuration to the instance's property annotations */
|
|
341
|
-
instance.propertyAnnotations.push(decoratorConfiguration);
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
instance = this.addInstanceContainer(instanceFunc);
|
|
345
|
-
instance.propertyAnnotations.push(decoratorConfiguration);
|
|
346
|
-
}
|
|
347
|
-
/* Add change validation based on the provided configuration */
|
|
348
|
-
if (decoratorConfiguration.config && decoratorConfiguration.config.conditionalExpression) {
|
|
349
|
-
let columns = Linq.expressionColumns(decoratorConfiguration.config.conditionalExpression);
|
|
350
|
-
this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);
|
|
351
|
-
}
|
|
352
|
-
/* Add dynamic configuration and validation */
|
|
353
|
-
if (decoratorConfiguration.config && decoratorConfiguration.config.dynamicConfig) {
|
|
354
|
-
let columns = Linq.dynamicConfigParser(decoratorConfiguration.config.dynamicConfig, decoratorConfiguration.propertyName);
|
|
355
|
-
this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);
|
|
356
|
-
}
|
|
357
|
-
/* Set conditional columns based on the decorator configuration */
|
|
358
|
-
this.setConditionalColumns(instance, decoratorConfiguration);
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Sets conditional columns based on the decorator configuration.
|
|
362
|
-
* @param instance The instance container.
|
|
363
|
-
* @param decoratorConfiguration The decorator configuration.
|
|
364
|
-
*/
|
|
365
|
-
setConditionalColumns(instance, decoratorConfiguration) {
|
|
366
|
-
/* Checks if there is an instance and decorator configuration present */
|
|
367
|
-
if (instance && decoratorConfiguration.config) {
|
|
368
|
-
/* Handles logical annotations (AND, OR, NOT) */
|
|
369
|
-
if (decoratorConfiguration.annotationType == AnnotationTypes.and ||
|
|
370
|
-
decoratorConfiguration.annotationType == AnnotationTypes.or ||
|
|
371
|
-
decoratorConfiguration.annotationType == AnnotationTypes.not) {
|
|
372
|
-
/* Iterates over validation configurations */
|
|
373
|
-
Object.keys(decoratorConfiguration.config.validation).forEach(t => {
|
|
374
|
-
/* Checks if the validation configuration is not a boolean */
|
|
375
|
-
if (typeof decoratorConfiguration.config.validation[t] !== "boolean") {
|
|
376
|
-
/* Sets logical conditional based on the validation configuration */
|
|
377
|
-
this.setLogicalConditional(instance, t, decoratorConfiguration.config.validation[t].fieldName, decoratorConfiguration.propertyName);
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
/* Sets logical conditional for non-logical annotations */
|
|
383
|
-
this.setLogicalConditional(instance, decoratorConfiguration.annotationType, decoratorConfiguration.config.fieldName, decoratorConfiguration.propertyName);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Sets logical conditionals based on the decorator configuration.
|
|
389
|
-
* @param instance The instance container.
|
|
390
|
-
* @param annotationType The annotation type.
|
|
391
|
-
* @param fieldName The field name.
|
|
392
|
-
* @param propertyName The property name.
|
|
393
|
-
*/
|
|
394
|
-
setLogicalConditional(instance, annotationType, fieldName, propertyName) {
|
|
395
|
-
/*
|
|
396
|
-
* Checks if there is an instance and annotation type with applicable conditions
|
|
397
|
-
* for setting conditional value properties.
|
|
398
|
-
*/
|
|
399
|
-
if (instance && ((annotationType == AnnotationTypes.compare ||
|
|
400
|
-
annotationType == AnnotationTypes.greaterThan ||
|
|
401
|
-
annotationType == AnnotationTypes.greaterThanEqualTo ||
|
|
402
|
-
annotationType == AnnotationTypes.lessThan ||
|
|
403
|
-
annotationType == AnnotationTypes.lessThanEqualTo ||
|
|
404
|
-
annotationType == AnnotationTypes.different ||
|
|
405
|
-
annotationType == AnnotationTypes.factor ||
|
|
406
|
-
annotationType == AnnotationTypes.minTime ||
|
|
407
|
-
annotationType == AnnotationTypes.maxTime) ||
|
|
408
|
-
(annotationType == AnnotationTypes.creditCard && fieldName) ||
|
|
409
|
-
((annotationType == AnnotationTypes.minDate || annotationType == AnnotationTypes.maxDate) && fieldName))) {
|
|
410
|
-
/* Sets conditional value property based on the conditions */
|
|
411
|
-
this.setConditionalValueProp(instance, fieldName, propertyName);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Sets conditional value properties based on the decorator configuration.
|
|
416
|
-
* @param instance The instance container.
|
|
417
|
-
* @param propertyName The property name.
|
|
418
|
-
* @param refPropertyName The reference property name.
|
|
419
|
-
*/
|
|
420
|
-
setConditionalValueProp(instance, propertyName, refPropertyName) {
|
|
421
|
-
/* Checks if propName exists */
|
|
422
|
-
if (propertyName) {
|
|
423
|
-
/* Splits propName into individual properties */
|
|
424
|
-
let splitProps = propertyName.split ? propertyName.split('.') : '';
|
|
425
|
-
/* Checks if the length of splitProps is less than 2 */
|
|
426
|
-
if (splitProps.length < 2) {
|
|
427
|
-
/* Initializes conditionalValidationProps if it does not exist */
|
|
428
|
-
if (!instance.conditionalValidationProps) {
|
|
429
|
-
instance.conditionalValidationProps = {};
|
|
430
|
-
}
|
|
431
|
-
/* Initializes conditionalValidationProps[propName] if it does not exist */
|
|
432
|
-
if (!instance.conditionalValidationProps[propertyName]) {
|
|
433
|
-
instance.conditionalValidationProps[propertyName] = [];
|
|
434
|
-
}
|
|
435
|
-
/* Pushes refPropName into conditionalValidationProps[propName] if it does not exist */
|
|
436
|
-
if (instance.conditionalValidationProps[propertyName].indexOf(refPropertyName) == -1) {
|
|
437
|
-
instance.conditionalValidationProps[propertyName].push(refPropertyName);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
else {
|
|
441
|
-
/* Adds change validation for complex properties */
|
|
442
|
-
this.addChangeValidation(instance, refPropertyName, [{
|
|
443
|
-
argumentIndex: 1,
|
|
444
|
-
objectPropName: splitProps[0],
|
|
445
|
-
propName: splitProps[1],
|
|
446
|
-
referencePropName: refPropertyName
|
|
447
|
-
}]);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Adds change validation based on the columns.
|
|
453
|
-
* @param instance The instance container.
|
|
454
|
-
* @param propertyName The property name.
|
|
455
|
-
* @param columns The columns.
|
|
456
|
-
*/
|
|
457
|
-
addChangeValidation(instance, propertyName, columns) {
|
|
458
|
-
/* Checks if instance exists. */
|
|
459
|
-
if (instance) {
|
|
460
|
-
/* Initializes conditionalValidationProps if it does not exist. */
|
|
461
|
-
if (!instance.conditionalValidationProps) {
|
|
462
|
-
instance.conditionalValidationProps = {};
|
|
463
|
-
}
|
|
464
|
-
/* Iterates through columns. */
|
|
465
|
-
columns.forEach(t => {
|
|
466
|
-
/* Checks if propName exists and objectPropName does not exist. */
|
|
467
|
-
if (t.propName && !t.objectPropName) {
|
|
468
|
-
/* Initializes conditionalValidationProps[t.propName] if it does not exist. */
|
|
469
|
-
if (!instance.conditionalValidationProps[t.propName]) {
|
|
470
|
-
instance.conditionalValidationProps[t.propName] = [];
|
|
471
|
-
}
|
|
472
|
-
/* Pushes propertyName into conditionalValidationProps[t.propName] if it does not exist. */
|
|
473
|
-
if (instance.conditionalValidationProps[t.propName].indexOf(propertyName) == -1) {
|
|
474
|
-
instance.conditionalValidationProps[t.propName].push(propertyName);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
else {
|
|
478
|
-
/* Checks if propName and objectPropName exist. */
|
|
479
|
-
if (t.propName && t.objectPropName) {
|
|
480
|
-
/* Initializes conditionalObjectProps if it does not exist. */
|
|
481
|
-
if (!instance.conditionalObjectProps) {
|
|
482
|
-
instance.conditionalObjectProps = [];
|
|
483
|
-
}
|
|
484
|
-
/* Sets referencePropName and adds it to conditionalObjectProps. */
|
|
485
|
-
t.referencePropName = propertyName;
|
|
486
|
-
instance.conditionalObjectProps.push(t);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
/**
|
|
494
|
-
* Represents a default container for managing instance configurations.
|
|
495
|
-
*
|
|
496
|
-
* Manages the configuration and instantiation of validation decorators, sanitizers, and other properties for classes.
|
|
497
|
-
* This class serves as a container for managing instance-related configurations and properties.
|
|
498
|
-
*/
|
|
499
|
-
export const defaultContainer = new DefaultContainer();
|
|
500
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFB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dGVudCI6WyJpbXBvcnQgeyBBUlJBWV9QUk9QRVJUWSwgT0JKRUNUX1BST1BFUlRZLCBQUk9QRVJUWSwgUlhDT0RFIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IERFQ09SQVRPUlMgfSBmcm9tIFwiLi4vY29uc3QvZGVjb3JhdG9ycy5jb25zdFwiO1xyXG5pbXBvcnQgeyBQcm9wc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL3Byb3BzLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9kZWNvcmF0b3ItY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnN0YW5jZUNvbnRhaW5lciB9IGZyb20gXCIuLi9tb2RlbHMvaW5zdGFuY2UtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvcGVydHktaW5mb1wiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi9hbm5vdGF0aW9uLXR5cGVzXCI7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbnRhaW5lciB7XHJcbiAgICAvKipcclxuICAqIFJlcHJlc2VudHMgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIG9wZXJhdGluZyBpbiBleHBlcmltZW50YWwgbW9kZS5cclxuICAqIEV4cGVyaW1lbnRhbCBtb2RlIG1heSBpbnRyb2R1Y2UgZmVhdHVyZXMgdGhhdCBhcmUgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgb3IgdGVzdGluZy5cclxuICAqL1xyXG4gICAgcHVibGljIGlzRXhwZXJpbWVudGFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBjb250YWluaW5nIGluc3RhbmNlcyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuXHJcbiAgICAgKiBFYWNoIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwbGljYXRpb24gd2l0aCBhc3NvY2lhdGVkIHByb3BlcnRpZXMgYW5kIGRlY29yYXRvcnMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5zdGFuY2VzOiBJbnN0YW5jZUNvbnRhaW5lcltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3VudGVyIHVzZWQgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBtb2RlbCBpbnN0YW5jZXMuXHJcbiAgICAgKiBUaGlzIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgbmV3IG1vZGVsIGluc3RhbmNlIGlzIGFkZGVkIHRvIHRoZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb2RlbEluY3JlbWVudENvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SW5zdGFuY2UodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluc3RhbmNlIGZ1bmN0aW9uIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlRnVuYyA9ICFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgICAgICAvKiBGaWx0ZXIgaW5zdGFuY2VzIHRvIGZpbmQgdGhlIG9uZSBtYXRjaGluZyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcblxyXG4gICAgICAgIC8qIElmIG5vIGluc3RhbmNlIGlzIGZvdW5kLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBjb25maWd1cmF0aW9ucyB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZ3MgVGhlIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcHNDb25maWcodGFyZ2V0OiBhbnksIGNvbmZpZ3M/OiBQcm9wc0NvbmZpZ1tdKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFyZ2V0ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2VDb250YWluZXIpIHtcclxuICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucyBvciBhbiBlbXB0eSBhcnJheSBpZiBub25lIGFyZSBwcm92aWRlZCAqL1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjb25maWcgb2YgY29uZmlncyA/PyBbXSkge1xyXG4gICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm9wZXJ0eSBuYW1lcyBpbiB0aGUgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBvZiBjb25maWcucHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgaW5mbyBpbiB0aGUgaW5zdGFuY2UgY29udGFpbmVyJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eUluZm8gPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3AgJiYgKHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBpbmZvIGV4aXN0cywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIFtwcm9wZXJ0eUluZm9dLCBjb25maWcpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IG5hbWUgaXMgJzphbGw6JywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBcIjphbGw6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXM/LmZpbHRlcih0ID0+IHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSEsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ3MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXMgbm90IGV4aXN0IGFuZCBubyBjb25maWd1cmF0aW9ucyBhcmUgcHJvdmlkZWQsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcih0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wQ29uZmlnKHRhcmdldDogYW55LCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUluZm9bXSwgY29uZmlnOiBQcm9wc0NvbmZpZykge1xyXG4gICAgICAgIC8qIEl0ZXJhdGVzIHRocm91Z2ggdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZyBvYmplY3QgKi9cclxuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZm8gb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBsZXQgZXhjbHVkZVByb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIGV4Y2x1ZGVQcm9wTmFtZXMgZXhpc3QgaW4gdGhlIGNvbmZpZyAqL1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMpIHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IHByb3BlcnR5IHNob3VsZCBiZSBleGNsdWRlZCBiYXNlZCBvbiBpdHMgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgZXhjbHVkZVByb3AgPSBjb25maWcuZXhjbHVkZVByb3BOYW1lcy5maW5kKHQgPT4gdCA9PSBwcm9wZXJ0eUluZm8ubmFtZSkgIT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgZXhjbHVkZWQgKi9cclxuICAgICAgICAgICAgaWYgKCFleGNsdWRlUHJvcCkge1xyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdHlwZU5hbWUgaW4gY29uZmlnLnZhbGlkYXRpb25Db25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB2YWxpZGF0aW9uIGZvciB0aGUgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0KHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgdHlwZU5hbWUsIChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBlcnJvciBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVycm9yLCBERUNPUkFUT1JTLmVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGRpc2FibGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZGlzYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmRpc2FibGUsIERFQ09SQVRPUlMuZGlzYWJsZWQpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZWxlbWVudENsYXNzIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVsZW1lbnRDbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVsZW1lbnRDbGFzcywgREVDT1JBVE9SUy5lbGVtZW50Q2xhc3MpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgaWdub3JlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuaWdub3JlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJbmZvLmlnbm9yZSA9IGNvbmZpZy5pZ25vcmVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBzYW5pdGl6ZXIgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkU2FuaXRpemVyKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XHJcbiAgICAgICAgLyogUmV0cmlldmVzIHRoZSBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMgYW5kIGFkZHMgYSBzYW5pdGl6ZXIgY29uZmlndXJhdGlvbiB0byBpdCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuZ2V0SW5zdGFuY2UodGFyZ2V0LCBwYXJhbWV0ZXJJbmRleCwgcHJvcGVydHlLZXksIGRlY29yYXRvclR5cGUpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgc2FuaXRpemVycyBvYmplY3QgZm9yIHRoZSBwcm9wZXJ0eSBleGlzdHMgKi9cclxuICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogUHVzaCB0aGUgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHNhbml0aXplcnMgb2JqZWN0ICovXHJcbiAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldLnB1c2goeyBuYW1lOiBkZWNvcmF0b3JUeXBlLCBjb25maWc6IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGREZWNvcmF0b3JDb25maWcodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGNvbmZpZzogYW55LCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIElmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZG9lc24ndCBleGlzdCwgY3JlYXRlIGEgbmV3IG9uZSAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgdG8gdGhlIG5vbi12YWxpZGF0aW9uIGRlY29yYXRvcnMgb2YgdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb25kaXRpb25hbEV4cHJlc3Npb25zW3Byb3BlcnR5S2V5XSA9IGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb247XHJcblxyXG4gICAgICAgIC8qIEV4dHJhY3QgY29sdW1ucyBmcm9tIHRoZSBjb25kaXRpb25hbCBleHByZXNzaW9uICovXHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBJdGVyYXRlIG92ZXIgZWFjaCBjb2x1bW4gKi9cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5hcmd1bWVudEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLyogQ29uc3RydWN0IHRoZSBjb2x1bW4gbmFtZSBiYXNlZCBvbiB3aGV0aGVyIG9iamVjdFByb3BOYW1lIGlzIGRlZmluZWQgKi9cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gKCFjb2x1bW4ub2JqZWN0UHJvcE5hbWUpID8gYCR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YCA6IGAke2NvbHVtbi5vYmplY3RQcm9wTmFtZX0uJHtjb2x1bW4ucHJvcE5hbWV9JHtSWENPREV9JHtjb2x1bW4uYXJndW1lbnRJbmRleH1gO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb2x1bW4gZXhpc3RzIGluIGNoYW5nZURldGVjdGlvbiBhbmQgaW5pdGlhbGl6ZSBpdCBpZiBuZWNlc3NhcnkgKi9cclxuICAgICAgICAgICAgICAgIGlmICghKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNoYW5nZURldGVjdGlvbltjb2x1bW5OYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IGtleSB0byB0aGUgY2hhbmdlRGV0ZWN0aW9uIGNvbHVtbiAqL1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkQ29sdW1ucyA9IChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV07XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uTmFtZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDb2x1bW5zLnB1c2gocHJvcGVydHlLZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLyogSGFuZGxlIHRoZSBjb250cm9sUHJvcCBpZiBhcmd1bWVudEluZGV4IGlzIC0xICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb250cm9sUHJvcFtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldID0ge307XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogU2V0IHRoZSBjb2x1bW4gbmFtZSB0byB0cnVlIGluIGNvbnRyb2xQcm9wICovXHJcbiAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldW2NvbHVtbi5wcm9wTmFtZS5yZXBsYWNlKFwiO1wiLCBcIlwiKV0gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBhbm5vdGF0aW9uVHlwZSBUaGUgYW5ub3RhdGlvbiB0eXBlLlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FzeW5jIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXQodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGNvbmZpZzogYW55LCBpc0FzeW5jOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGVmaW5lIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgIHZhciBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUluZGV4OiBwYXJhbWV0ZXJJbmRleCxcclxuICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgYW5ub3RhdGlvblR5cGU6IGFubm90YXRpb25UeXBlLFxyXG4gICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICAgICAgaXNBc3luYzogaXNBc3luYyxcclxuICAgICAgICAgICAgaXNWYWxpZGF0b3I6IGFubm90YXRpb25UeXBlICE9PSBcInVwZGF0ZU9uXCJcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgYXMgaW5zdGFuY2VGdW5jICovXHJcbiAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKCFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgcHJvcGVydHkgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlUeXBlIFRoZSBwcm9wZXJ0eSB0eXBlLlxyXG4gICAgICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5LlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRQcm9wZXJ0eU9iamVjdChuYW1lOiBzdHJpbmcsIHByb3BlcnR5VHlwZTogc3RyaW5nLCBlbnRpdHk6IGFueSwgdGFyZ2V0OiBhbnksIGNvbmZpZz86IGFueSkge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgIHByb3BlcnR5VHlwZTogcHJvcGVydHlUeXBlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcclxuICAgICAgICAgICAgZGF0YVByb3BlcnR5TmFtZTogY29uZmlnID8gY29uZmlnLm5hbWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGVudGl0eVByb3ZpZGVyOiBjb25maWcgPyBjb25maWcuZW50aXR5UHJvdmlkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgdG8gdGhlIHRhcmdldCdzIGNvbnN0cnVjdG9yICovXHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eSh0YXJnZXQuY29uc3RydWN0b3IsIHByb3BlcnR5SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGFuIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgbGlzdCBvZiBpbnN0YW5jZXMuXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBhZGRlZCBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAvKiBEZWZpbmUgYW4gaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlRnVuYywgICAgIC8qIEluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHByb3BlcnR5QW5ub3RhdGlvbnM6IFtdLCAgICAvKiBBbm5vdGF0aW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgcHJvcGVydGllczogW10sICAgICAgICAgICAgIC8qIFByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBub25WYWxpZGF0aW9uRGVjb3JhdG9yczoge1xyXG4gICAgICAgICAgICAgICAgLyogRGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGlvbjoge30sICAgICAgICAvKiBDaGFuZ2UgZGV0ZWN0aW9uIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8qIFNhbml0aXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBzYW5pdGl6ZXJzOiB7fVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIHRvIHRoZSBpbnN0YW5jZXMgYXJyYXkgKi9cclxuICAgICAgICB0aGlzLmluc3RhbmNlcy5wdXNoKGluc3RhbmNlQ29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjcmVhdGVkIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZUNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0Zyb21Bbm5vdGF0aW9uIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgZnJvbSBhbiBhbm5vdGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jOiBhbnksIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvLCBpc0Zyb21Bbm5vdGF0aW9uOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICAvKiBGaW5kIHRoZSBpbnN0YW5jZSBpbiB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGV4aXN0aW5nIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8sICFpc0Zyb21Bbm5vdGF0aW9uKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FkZFByb3BlcnR5IEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgYXMgYSBuZXcgcHJvcGVydHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNBZGRQcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBpbnN0YW5jZSdzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHkgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3BlcnR5SW5mby5uYW1lKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCAqL1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnRpZXM/LnB1c2gocHJvcGVydHlJbmZvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzQWRkUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogVXBkYXRlIHByb3BlcnR5IGluZm9ybWF0aW9uIGlmIHJlcXVlc3RlZCAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kYXRhUHJvcGVydHlOYW1lID0gcHJvcGVydHlJbmZvLmRhdGFQcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSA9IHByb3BlcnR5SW5mby5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlUGF0aCA9IHByb3BlcnR5SW5mby52YWx1ZVBhdGg7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gcHJvcGVydHlJbmZvLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AnnotationTypes } from '../core/annotation-types';
|
|
2
|
-
import { baseAsyncValidator } from "../reactive-form-validators/async/base.async.validator";
|
|
3
|
-
import { baseDecoratorFunction } from "./base-decorator.function";
|
|
4
|
-
export function allOf(config) {
|
|
5
|
-
return baseDecoratorFunction(AnnotationTypes.allOf, config);
|
|
6
|
-
}
|
|
7
|
-
export function allOfAsync(config) {
|
|
8
|
-
return baseDecoratorFunction(AnnotationTypes.allOf, [baseAsyncValidator(config, AnnotationTypes.allOf)], true);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsT2YuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RlY29yYXRvcnMvYWxsT2YuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsS0FBSyxDQUFDLE1BQW9CO0lBQ3RDLE9BQU8scUJBQXFCLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFvQjtJQUMzQyxPQUFPLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gJy4uL2NvcmUvYW5ub3RhdGlvbi10eXBlcyc7XHJcbmltcG9ydCB7IEFycmF5Q29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvYXJyYXktY29uZmlnXCI7XHJcbmltcG9ydCB7IGJhc2VBc3luY1ZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvYXN5bmMvYmFzZS5hc3luYy52YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgYmFzZURlY29yYXRvckZ1bmN0aW9uIH0gZnJvbSBcIi4vYmFzZS1kZWNvcmF0b3IuZnVuY3Rpb25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxPZihjb25maWc/OiBBcnJheUNvbmZpZykge1xyXG4gICAgcmV0dXJuIGJhc2VEZWNvcmF0b3JGdW5jdGlvbihBbm5vdGF0aW9uVHlwZXMuYWxsT2YsIGNvbmZpZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxPZkFzeW5jKGNvbmZpZz86IEFycmF5Q29uZmlnKSB7XHJcbiAgICByZXR1cm4gYmFzZURlY29yYXRvckZ1bmN0aW9uKEFubm90YXRpb25UeXBlcy5hbGxPZiwgW2Jhc2VBc3luY1ZhbGlkYXRvcihjb25maWcsIEFubm90YXRpb25UeXBlcy5hbGxPZildLCB0cnVlKTtcclxufSJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AnnotationTypes } from '../core/annotation-types';
|
|
2
|
-
import { baseAsyncValidator } from "../reactive-form-validators/async/base.async.validator";
|
|
3
|
-
import { baseDecoratorFunction } from "./base-decorator.function";
|
|
4
|
-
export function alpha(config) {
|
|
5
|
-
return baseDecoratorFunction(AnnotationTypes.alpha, config);
|
|
6
|
-
}
|
|
7
|
-
export function alphaAsync(config) {
|
|
8
|
-
return baseDecoratorFunction(AnnotationTypes.alpha, [baseAsyncValidator(config, AnnotationTypes.alpha)], true);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RlY29yYXRvcnMvYWxwaGEuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsS0FBSyxDQUFDLE1BQW9CO0lBQ3RDLE9BQU8scUJBQXFCLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFvQjtJQUMzQyxPQUFPLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gJy4uL2NvcmUvYW5ub3RhdGlvbi10eXBlcyc7XHJcbmltcG9ydCB7IEFscGhhQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IGJhc2VBc3luY1ZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvYXN5bmMvYmFzZS5hc3luYy52YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgYmFzZURlY29yYXRvckZ1bmN0aW9uIH0gZnJvbSBcIi4vYmFzZS1kZWNvcmF0b3IuZnVuY3Rpb25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbHBoYShjb25maWc/OiBBbHBoYUNvbmZpZykge1xyXG4gICAgcmV0dXJuIGJhc2VEZWNvcmF0b3JGdW5jdGlvbihBbm5vdGF0aW9uVHlwZXMuYWxwaGEsIGNvbmZpZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbHBoYUFzeW5jKGNvbmZpZz86IEFscGhhQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gYmFzZURlY29yYXRvckZ1bmN0aW9uKEFubm90YXRpb25UeXBlcy5hbHBoYSwgW2Jhc2VBc3luY1ZhbGlkYXRvcihjb25maWcsIEFubm90YXRpb25UeXBlcy5hbHBoYSldLCB0cnVlKTtcclxufVxyXG5cclxuIl19
|