@eo-sdk/client 11.14.4 → 11.14.6
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/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +2 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +1 -0
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +1 -0
- package/assets/_default/i18n/en.json +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +1 -1
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +6 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +7 -4
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +16 -4
- package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +20 -1
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +8 -4
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +7 -5
- package/fesm2022/eo-sdk-client.mjs +68 -25
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs
CHANGED
|
@@ -95,11 +95,11 @@ export class FormElementComponent {
|
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", isTableElement: "isTableElement", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\"\n [isTableElement]=\"isTableElement\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range #datetimeField *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"datetimeField.searchOption && datetimeField.searchOption !== 'eq' && formElementRef._eoFormElement.withtime\"\n [situation]=\"situation\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "isTableElement", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator", "situation"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly", "isTableElement"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "formControlName", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject", "formControl", "isTableElement"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "isTableElement", "isFilterElement", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", isTableElement: "isTableElement", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\"\n [isTableElement]=\"isTableElement\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range #datetimeField *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"datetimeField.searchOption && datetimeField.searchOption !== 'eq' && formElementRef._eoFormElement.withtime\"\n [situation]=\"situation\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "isTableElement", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator", "situation"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly", "isTableElement"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "formControlName", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject", "formControl", "isTableElement"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "isTableElement", "isFilterElement", "maxLength", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
|
|
99
99
|
}
|
|
100
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormElementComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
|
-
args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\"\n [isTableElement]=\"isTableElement\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range #datetimeField *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"datetimeField.searchOption && datetimeField.searchOption !== 'eq' && formElementRef._eoFormElement.withtime\"\n [situation]=\"situation\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
|
|
102
|
+
args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\"\n [isTableElement]=\"isTableElement\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\" [isTableElement]=\"isTableElement\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range #datetimeField *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"datetimeField.searchOption && datetimeField.searchOption !== 'eq' && formElementRef._eoFormElement.withtime\"\n [situation]=\"situation\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
|
|
103
103
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { elementTemplates: [{
|
|
104
104
|
type: ViewChildren,
|
|
105
105
|
args: [FormElementTemplate, { emitDistinctChangesOnly: true }]
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
119
119
|
type: ViewChild,
|
|
120
120
|
args: ['formField']
|
|
121
121
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBRVAsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFD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RSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFDSyx1QkFBdUI7c0JBQTdGLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUM7Z0JBYzVELFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuXG4gIGVsZW1lbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZm9ybUVsZW1lbnRSZWY6IGFueTtcbiAgZWxlbWVudDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyO1xuICBmb2N1c2VkO1xuICBpc051bGw6IGJvb2xlYW47XG4gIHRhZzoge1xuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZ1xuICB9O1xuXG4gIEBJbnB1dCgpIHNpdHVhdGlvbjtcbiAgQElucHV0KCkgc2tpcFRvZ2dsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNUYWJsZUVsZW1lbnQ6IGJvb2xlYW47XG5cbiAgLy8gZWxlbWVudCBpcyBzdXBwb3NlZCB0byBiZSBhIHNwZWNpYWwgVW50eXBlZEZvcm1Hcm91cCBob2xkaW5nIGEgc2luZ2xlIGZvcm0gZWxlbWVudFxuICBASW5wdXQoJ2VsZW1lbnQnKVxuICBzZXQgZWxlbWVudFNldHRlcihlbDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG4gICAgaWYgKGVsKSB7XG5cbiAgICAgIHRoaXMuZWxlbWVudCA9IGVsO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZiA9IGVsLmNvbnRyb2xzW2VsLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIHRoaXMubGFiZWxUb2dnbGVkKHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgdGhpcy5hZGREYXRhVG9SZW5kZXIodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnSUQnKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuID0gMzI7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuID0gMzI7XG4gICAgICB9XG4gICAgICB0aGlzLmZldGNoVGFncygpO1xuXG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSAmJiB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREYXRhVG9SZW5kZXIoZWxlbWVudCkge1xuICAgIGNvbnN0IG11bHRpc2VsZWN0ID0gZWxlbWVudC5tdWx0aXNlbGVjdDtcbiAgICBjb25zdCBkYXRhTWV0YSA9IGVsZW1lbnQuZGF0YU1ldGE7XG4gICAgaWYgKG11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IGRhdGFNZXRhO1xuICAgIH1cbiAgICBpZiAoIW11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBkYXRhTWV0YS5pZCA9IGVsZW1lbnQudmFsdWU7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IFtkYXRhTWV0YV07XG4gICAgfVxuICB9XG5cbiAgbGFiZWxUb2dnbGVkKHRvZ2dsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuc2tpcFRvZ2dsZSAmJiB0aGlzLmVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIGNvbnN0IHRvZ2dsZUNsYXNzID0gJ2xhYmVsLXRvZ2dsZWQnO1xuICAgICAgdGhpcy5pc051bGwgPSB0b2dnbGVkO1xuICAgICAgaWYgKHRvZ2dsZWQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0b2dnbGVDbGFzcyk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0b2dnbGVkO1xuICAgICAgdGhpcy5lbGVtZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBvcmdhbml6YXRpb25EYXRhTWV0YVJlc29sdmVkKGRhdGEpIHtcbiAgICAvLyBuZXcgbWV0YSBkYXRhIHdpbGwgYWx3YXlzIGFycml2ZSBhcyBhcnJheSBldmVuIGZvciBzaW5nbGUgaW5wdXRzLCBzbyB3ZSBoYXZlIHRvIGNvbnZlcnRcbiAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgfHwgdGhpcy5zaXR1YXRpb24gPT0gJ1NFQVJDSCcpID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkIHQte3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlfX1cIiAjZm9ybUZpZWxkXG4gICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5fVwiICpuZ0lmPVwiZWxlbWVudFRlbXBsYXRlXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWxlbWVudFRlbXBsYXRlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIHRoZSBmaWVsZHMgZGVzY3JpcHRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvblwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb259fTwvZGl2PlxuXG4gICAgPCEtLSBlcnJvci92YWxpZGF0aW9uIG1lc3NhZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlcnItbXNnXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnNcIj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlcmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5kYXRlcmFuZ2UuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5udW1iZXJyYW5nZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcnJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVyXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkubnVtYmVyPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvblwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlVmFsdWVzXCI+XG4gICAgICAgIHt7Zm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvbi50cmFuc2xhdGVLZXl9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZVwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVWYWx1ZXNcIj57e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVLZXl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVnZXggfHwgZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnBhdHRlcm5cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLnJlZ2V4Lm5vbWF0Y2g8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb25lbWFpbFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24uZW1haWw8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb251cmxcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24udXJsXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMub25seVdoaXRlc3BhY2VzXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLndoaXRlc3BhY2VzPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRhdGVjb250cm9sXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNvZGVzeXN0ZW1cIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5jb2Rlc3lzdGVtLnZhbHVlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZW9mb3JtU2NyaXB0XCI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5lcnJvci5tc2d9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5yZXF1aXJlZFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnJlcXVpcmVkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm1heGxlbmd0aFwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInttYXhsZW5ndGg6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbn1cIj5lby5mb3JtLnByb3BlcnR5Lm1heGxlbmd0aDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5taW5sZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWlubGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5taW5sZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5taW5sZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZElEUmVmZXJlbmNlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuaWRyZWZlcmVuY2UuZGVsZXRlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kZWxldGVkT3JnT2JqZWN0XCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkub3Jnb2JqZWN0LmRlbGV0ZWQ8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuXG5cbiAgPCEtLSBTVFJJTkcgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiU1RSSU5HXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLXN0cmluZ1xuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gIT09ICdzZWxlY3RvcicgJiYgIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZXVybFwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbbXVsdGlsaW5lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpbGluZVwiXG4gICAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtzaXplXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICAgIDwhLS0gRHluYW1pYyBMaXN0IC0tPlxuICAgICAgPGVvLWR5bmFtaWMtbGlzdFxuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgKGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InIHx8IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZXVybClcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZVVybF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGV1cmxcIlxuICAgICAgICBbZm9ybUVsZW1lbnRDaGFuZ2VzXT1cImVsZW1lbnQudmFsdWVDaGFuZ2VzXCJcbiAgICAgICAgW2lzVGFibGVFbGVtZW50XT1cImlzVGFibGVFbGVtZW50XCI+XG4gICAgICAgID48L2VvLWR5bmFtaWMtbGlzdD5cblxuXG4gICAgICA8IS0tIFJlZmVyZW5jZSAtLT5cbiAgICAgIDxlby1yZWZlcmVuY2UgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgW3JlZmVyZW5jZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiISFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0IDogc2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiXG4gICAgICAgIFttaW5MZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuXCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj48L2VvLXJlZmVyZW5jZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBJRC1SZWZlcmVuY2UgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiUkVGRVJFTkNFXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWlkLXJlZmVyZW5jZSBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YVRvUmVuZGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFUb1JlbmRlclwiXG4gICAgICAgIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW2NvbnRleHRJZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jb250ZXh0SWRcIlxuICAgICAgICBbZXhjZXB0aW9uSURzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmV4Y2VwdGlvbklEc1wiXG4gICAgICAgIFtxdWVyeUZpbHRlcnNdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucXVlcnlGaWx0ZXJzXCJcbiAgICAgICAgW29iamVjdFR5cGVzRmlsdGVyXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm9iamVjdFR5cGVzRmlsdGVyXCI+PC9lby1pZC1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiSURcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCIgW3JlZ2V4XT1cIideWzAtOWEtZkEtRl0qJCdcIlxuICAgICAgICBbcW5hbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucW5hbWVcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIjMyXCIgW21heExlbmd0aF09XCIzMlwiPjwvZW8tc3RyaW5nPlxuXG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPCEtLSBCT09MRUFOIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkJPT0xFQU5cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCIgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbdHJpc3RhdGVdPVwidHJ1ZVwiPjwvZW8tY2hlY2tib3g+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gQ09ERVNZU1RFTSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJDT0RFU1lTVEVNXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tY29kZXN5c3RlbSBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtjb2Rlc3lzdGVtXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW1cIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbZmlsdGVyRnVuY3Rpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZmlsdGVyRnVuY3Rpb25cIlxuICAgICAgICBbZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb25cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCIgW2lzVGFibGVFbGVtZW50XT1cImlzVGFibGVFbGVtZW50XCI+PC9lby1jb2Rlc3lzdGVtPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIE9SR0FOSVpBVElPTiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJPUkdBTklaQVRJT05cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1vcmdhbml6YXRpb24gW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZGF0YU1ldGFdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGFcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZmlsdGVyT2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlclwiIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIChvbkRhdGFNZXRhQ2hhbmdlZCk9XCJvcmdhbml6YXRpb25EYXRhTWV0YVJlc29sdmVkKCRldmVudClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCIgW2lzVGFibGVFbGVtZW50XT1cImlzVGFibGVFbGVtZW50XCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gTlVNQkVSIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk5VTUJFUlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1udW1iZXIgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3ByZWNpc2lvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wcmVjaXNpb25cIiBbc2NhbGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2NhbGVcIlxuICAgICAgICBbZ3JvdXBpbmddPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZ3JvdXBpbmdcIiBbcGF0dGVybl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wYXR0ZXJuXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPlxuICAgICAgPC9lby1udW1iZXI+XG5cbiAgICAgIDxlby1udW1iZXItcmFuZ2UgKm5nSWY9XCJzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3ByZWNpc2lvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wcmVjaXNpb25cIiBbc2NhbGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2NhbGVcIlxuICAgICAgICBbZ3JvdXBpbmddPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZ3JvdXBpbmdcIiBbcGF0dGVybl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5wYXR0ZXJuXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiIFtpc1RhYmxlRWxlbWVudF09XCJpc1RhYmxlRWxlbWVudFwiPjwvZW8tbnVtYmVyLXJhbmdlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIERBVEUgQU5EIERBVEVUSU1FIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkRBVEVUSU1FXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWRhdGUgKm5nSWY9XCJzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgW3dpdGhUaW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZT5cblxuICAgICAgPGVvLWRhdGV0aW1lLXJhbmdlICNkYXRldGltZUZpZWxkICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFt3aXRoVGltZV09XCJkYXRldGltZUZpZWxkLnNlYXJjaE9wdGlvbiAmJiBkYXRldGltZUZpZWxkLnNlYXJjaE9wdGlvbiAhPT0gJ2VxJyAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC53aXRodGltZVwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgW29wZXJhdG9yXT1cImVsZW1lbnQ/LnZhbHVlW2VsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXSA/IGVsZW1lbnQudmFsdWVbZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdPy5vcGVyYXRvcjogJ2VxJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWRhdGV0aW1lLXJhbmdlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPCEtLSBwcmludCBvdXQgdGhlIHR5cGUgaWYgaXQncyBub3QgbWF0Y2hpbmcgYW55dGhpbmcgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjdHBsVW5rbm93bj48Yj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fTwvYj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBRVAsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFD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RSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFDSyx1QkFBdUI7c0JBQTdGLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUM7Z0JBYzVELFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuXG4gIGVsZW1lbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZm9ybUVsZW1lbnRSZWY6IGFueTtcbiAgZWxlbWVudDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyO1xuICBmb2N1c2VkO1xuICBpc051bGw6IGJvb2xlYW47XG4gIHRhZzoge1xuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZ1xuICB9O1xuXG4gIEBJbnB1dCgpIHNpdHVhdGlvbjtcbiAgQElucHV0KCkgc2tpcFRvZ2dsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNUYWJsZUVsZW1lbnQ6IGJvb2xlYW47XG5cbiAgLy8gZWxlbWVudCBpcyBzdXBwb3NlZCB0byBiZSBhIHNwZWNpYWwgVW50eXBlZEZvcm1Hcm91cCBob2xkaW5nIGEgc2luZ2xlIGZvcm0gZWxlbWVudFxuICBASW5wdXQoJ2VsZW1lbnQnKVxuICBzZXQgZWxlbWVudFNldHRlcihlbDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG4gICAgaWYgKGVsKSB7XG5cbiAgICAgIHRoaXMuZWxlbWVudCA9IGVsO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudFJlZiA9IGVsLmNvbnRyb2xzW2VsLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XG4gICAgICAgIHRoaXMubGFiZWxUb2dnbGVkKHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgdGhpcy5hZGREYXRhVG9SZW5kZXIodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnSUQnKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWlubGVuID0gMzI7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuID0gMzI7XG4gICAgICB9XG4gICAgICB0aGlzLmZldGNoVGFncygpO1xuXG4gICAgICBpZiAodGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSAmJiB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmb3JtRmllbGQnKSBmb3JtRmllbGQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREYXRhVG9SZW5kZXIoZWxlbWVudCkge1xuICAgIGNvbnN0IG11bHRpc2VsZWN0ID0gZWxlbWVudC5tdWx0aXNlbGVjdDtcbiAgICBjb25zdCBkYXRhTWV0YSA9IGVsZW1lbnQuZGF0YU1ldGE7XG4gICAgaWYgKG11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IGRhdGFNZXRhO1xuICAgIH1cbiAgICBpZiAoIW11bHRpc2VsZWN0ICYmIGRhdGFNZXRhKSB7XG4gICAgICBkYXRhTWV0YS5pZCA9IGVsZW1lbnQudmFsdWU7XG4gICAgICBlbGVtZW50LmRhdGFUb1JlbmRlciA9IFtkYXRhTWV0YV07XG4gICAgfVxuICB9XG5cbiAgbGFiZWxUb2dnbGVkKHRvZ2dsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuc2tpcFRvZ2dsZSAmJiB0aGlzLmVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIGNvbnN0IHRvZ2dsZUNsYXNzID0gJ2xhYmVsLXRvZ2dsZWQnO1xuICAgICAgdGhpcy5pc051bGwgPSB0b2dnbGVkO1xuICAgICAgaWYgKHRvZ2dsZWQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0b2dnbGVDbGFzcyk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0b2dnbGVkO1xuICAgICAgdGhpcy5lbGVtZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBvcmdhbml6YXRpb25EYXRhTWV0YVJlc29sdmVkKGRhdGEpIHtcbiAgICAvLyBuZXcgbWV0YSBkYXRhIHdpbGwgYWx3YXlzIGFycml2ZSBhcyBhcnJheSBldmVuIGZvciBzaW5nbGUgaW5wdXRzLCBzbyB3ZSBoYXZlIHRvIGNvbnZlcnRcbiAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgfHwgdGhpcy5zaXR1YXRpb24gPT0gJ1NFQVJDSCcpID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkIHQte3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlfX1cIiAjZm9ybUZpZWxkXG4gICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5fVwiICpuZ0lmPVwiZWxlbWVudFRlbXBsYXRlXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWxlbWVudFRlbXBsYXRlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIHRoZSBmaWVsZHMgZGVzY3JpcHRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvblwiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb259fTwvZGl2PlxuXG4gICAgPCEtLSBlcnJvci92YWxpZGF0aW9uIG1lc3NhZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlcnItbXNnXCIgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnNcIj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kYXRlcmFuZ2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5kYXRlcmFuZ2UuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5udW1iZXJyYW5nZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5Lm51bWJlcnJhbmdlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubnVtYmVyXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkubnVtYmVyPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvblwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5wcmVjaXNpb24udHJhbnNsYXRlVmFsdWVzXCI+XG4gICAgICAgIHt7Zm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvbi50cmFuc2xhdGVLZXl9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZVwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVWYWx1ZXNcIj57e2Zvcm1FbGVtZW50UmVmLmVycm9ycy5zY2FsZS50cmFuc2xhdGVLZXl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucmVnZXggfHwgZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnBhdHRlcm5cIiB0cmFuc2xhdGU+XG4gICAgICAgIGVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLnJlZ2V4Lm5vbWF0Y2g8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb25lbWFpbFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24uZW1haWw8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY2xhc3NpZmljYXRpb251cmxcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3IuY2xhc3NpZmljYXRpb24udXJsXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMub25seVdoaXRlc3BhY2VzXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuc3RyaW5nLmVycm9yLndoaXRlc3BhY2VzPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRhdGVjb250cm9sXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZGF0ZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmNvZGVzeXN0ZW1cIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5jb2Rlc3lzdGVtLnZhbHVlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZW9mb3JtU2NyaXB0XCI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5lcnJvci5tc2d9fTwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5yZXF1aXJlZFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnJlcXVpcmVkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm1heGxlbmd0aFwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInttYXhsZW5ndGg6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbn1cIj5lby5mb3JtLnByb3BlcnR5Lm1heGxlbmd0aDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5taW5sZW5ndGhcIiB0cmFuc2xhdGVcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7bWlubGVuZ3RoOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5taW5sZW59XCI+ZW8uZm9ybS5wcm9wZXJ0eS5taW5sZW5ndGg8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGVsZXRlZElEUmVmZXJlbmNlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuaWRyZWZlcmVuY2UuZGVsZXRlZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kZWxldGVkT3JnT2JqZWN0XCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkub3Jnb2JqZWN0LmRlbGV0ZWQ8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuXG5cbiAgPCEtLSBTVFJJTkcgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiU1RSSU5HXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLXN0cmluZ1xuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gIT09ICdzZWxlY3RvcicgJiYgIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZXVybFwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbbXVsdGlsaW5lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpbGluZVwiXG4gICAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtzaXplXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICAgIDwhLS0gRHluYW1pYyBMaXN0IC0tPlxuICAgICAgPGVvLWR5bmFtaWMtbGlzdFxuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgKGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InIHx8IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZXVybClcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZVVybF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGV1cmxcIlxuICAgICAgICBbZm9ybUVsZW1lbnRDaGFuZ2VzXT1cImVsZW1lbnQudmFsdWVDaGFuZ2VzXCJcbiAgICAgICAgW2lzVGFibGVFbGVtZW50XT1cImlzVGFibGVFbGVtZW50XCJcbiAgICAgICAgW21heExlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tYXhsZW5cIj5cbiAgICAgICAgPjwvZW8tZHluYW1pYy1saXN0PlxuXG5cbiAgICAgIDwhLS0gUmVmZXJlbmNlIC0tPlxuICAgICAgPGVvLXJlZmVyZW5jZSAqbmdJZj1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbcmVmZXJlbmNlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCIhIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgOiBzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCJcbiAgICAgICAgW21pbkxlbmd0aF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5taW5sZW5cIlxuICAgICAgICBbbWF4TGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlblwiPjwvZW8tcmVmZXJlbmNlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIElELVJlZmVyZW5jZSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJSRUZFUkVOQ0VcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8taWQtcmVmZXJlbmNlIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtkYXRhVG9SZW5kZXJdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YVRvUmVuZGVyXCJcbiAgICAgICAgW3JlZmVyZW5jZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2VcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIiBbY29udGV4dElkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmNvbnRleHRJZFwiXG4gICAgICAgIFtleGNlcHRpb25JRHNdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZXhjZXB0aW9uSURzXCJcbiAgICAgICAgW3F1ZXJ5RmlsdGVyc109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xdWVyeUZpbHRlcnNcIlxuICAgICAgICBbb2JqZWN0VHlwZXNGaWx0ZXJdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQub2JqZWN0VHlwZXNGaWx0ZXJcIj48L2VvLWlkLXJlZmVyZW5jZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBJRCAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJJRFwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1zdHJpbmcgW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5hdXRvY29tcGxldGVcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIiBbcmVnZXhdPVwiJ15bMC05YS1mQS1GXSokJ1wiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFttaW5MZW5ndGhdPVwiMzJcIiBbbWF4TGVuZ3RoXT1cIjMyXCI+PC9lby1zdHJpbmc+XG5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cblxuICA8IS0tIEJPT0xFQU4gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiQk9PTEVBTlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIiBjbGFzcz1cImNoZWNrYm94XCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFt0cmlzdGF0ZV09XCJ0cnVlXCI+PC9lby1jaGVja2JveD5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBDT0RFU1lTVEVNIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIkNPREVTWVNURU1cIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jb2Rlc3lzdGVtIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2NvZGVzeXN0ZW1dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kaXNhYmxpbmdGaWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIiBbaXNUYWJsZUVsZW1lbnRdPVwiaXNUYWJsZUVsZW1lbnRcIj48L2VvLWNvZGVzeXN0ZW0+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gT1JHQU5JWkFUSU9OIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIk9SR0FOSVpBVElPTlwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLW9yZ2FuaXphdGlvbiBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtkYXRhTWV0YV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmaWx0ZXJPYmplY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZmlsdGVyXCIgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCJcbiAgICAgICAgKG9uRGF0YU1ldGFDaGFuZ2VkKT1cIm9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIiBbaXNUYWJsZUVsZW1lbnRdPVwiaXNUYWJsZUVsZW1lbnRcIj48L2VvLW9yZ2FuaXphdGlvbj5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBOVU1CRVIgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiTlVNQkVSXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLW51bWJlciAqbmdJZj1cInNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbcHJlY2lzaW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnByZWNpc2lvblwiIFtzY2FsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5zY2FsZVwiXG4gICAgICAgIFtncm91cGluZ109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5ncm91cGluZ1wiIFtwYXR0ZXJuXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnBhdHRlcm5cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+XG4gICAgICA8L2VvLW51bWJlcj5cblxuICAgICAgPGVvLW51bWJlci1yYW5nZSAqbmdJZj1cInNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbcHJlY2lzaW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnByZWNpc2lvblwiIFtzY2FsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5zY2FsZVwiXG4gICAgICAgIFtncm91cGluZ109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5ncm91cGluZ1wiIFtwYXR0ZXJuXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnBhdHRlcm5cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCIgW2lzVGFibGVFbGVtZW50XT1cImlzVGFibGVFbGVtZW50XCI+PC9lby1udW1iZXItcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gREFURSBBTkQgREFURVRJTUUgLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiREFURVRJTUVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tZGF0ZSAqbmdJZj1cInNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1kYXRlPlxuXG4gICAgICA8ZW8tZGF0ZXRpbWUtcmFuZ2UgI2RhdGV0aW1lRmllbGQgKm5nSWY9XCJzaXR1YXRpb24gPT09ICdTRUFSQ0gnXCIgW3BpY2tlclRpdGxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsXCJcbiAgICAgICAgW3dpdGhUaW1lXT1cImRhdGV0aW1lRmllbGQuc2VhcmNoT3B0aW9uICYmIGRhdGV0aW1lRmllbGQuc2VhcmNoT3B0aW9uICE9PSAnZXEnICYmIGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LndpdGh0aW1lXCJcbiAgICAgICAgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICBbb3BlcmF0b3JdPVwiZWxlbWVudD8udmFsdWVbZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdID8gZWxlbWVudC52YWx1ZVtlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV0/Lm9wZXJhdG9yOiAnZXEnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZXRpbWUtcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8IS0tIHByaW50IG91dCB0aGUgdHlwZSBpZiBpdCdzIG5vdCBtYXRjaGluZyBhbnl0aGluZyAtLT5cbiAgPG5nLXRlbXBsYXRlICN0cGxVbmtub3duPjxiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19PC9iPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|