@sumaris-net/ngx-components 2.7.3-rc47 → 2.7.3-rc48
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/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +3 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +4 -3
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/assets/manifest.json +1 -1
- package/src/theme/_ngx-components.forms.scss +0 -7
|
@@ -195,11 +195,11 @@ export class MatBooleanField {
|
|
|
195
195
|
this.cd.markForCheck();
|
|
196
196
|
}
|
|
197
197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatBooleanField, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
198
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "<mat-form-field\n *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n <!-- Radio -->\n <mat-form-field\n *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field\n *ngSwitchCase=\"'checkbox'\"\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field\n *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n />\n <div\n class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\"\n >\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ng-container>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"], dependencies: [{ 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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "@if (readonly) {\n<mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n}\n@else {\n @switch(style) {\n <!-- Radio -->\n @case('radio') {\n <mat-form-field\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Checkbox -->\n @case ('checkbox') {\n <mat-form-field\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Buttons -->\n @case ('button') {\n <mat-form-field\n [floatLabel]=\"'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(placeholder) {\n <mat-label [title]=\"placeholder\">{{ placeholder }}</mat-label>\n } @else {\n <mat-label> </mat-label>\n }\n\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [required]=\"required\"\n />\n @if (formControl.disabled) {\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n }\n @else {\n <div class=\"mat-form-field-buttons\" [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n }\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n }\n}\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
199
199
|
}
|
|
200
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatBooleanField, decorators: [{
|
|
201
201
|
type: Component,
|
|
202
|
-
args: [{ selector: 'mat-boolean-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n
|
|
202
|
+
args: [{ selector: 'mat-boolean-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (readonly) {\n<mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n}\n@else {\n @switch(style) {\n <!-- Radio -->\n @case('radio') {\n <mat-form-field\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Checkbox -->\n @case ('checkbox') {\n <mat-form-field\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Buttons -->\n @case ('button') {\n <mat-form-field\n [floatLabel]=\"'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(placeholder) {\n <mat-label [title]=\"placeholder\">{{ placeholder }}</mat-label>\n } @else {\n <mat-label> </mat-label>\n }\n\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [required]=\"required\"\n />\n @if (formControl.disabled) {\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n }\n @else {\n <div class=\"mat-form-field-buttons\" [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n }\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n }\n}\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"] }]
|
|
203
203
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormGroupDirective, decorators: [{
|
|
204
204
|
type: Optional
|
|
205
205
|
}] }], propDecorators: { yesButton: [{
|
|
@@ -259,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
259
259
|
}], value: [{
|
|
260
260
|
type: Input
|
|
261
261
|
}] } });
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBNEMsaUJBQWlCLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFJakgsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBRzVELE1BQU0sc0JBQXNCLEdBQWE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFTdEIsTUFBTSxPQUFPLGVBQWU7SUF3Q2hCO0lBQ1k7SUF4Q0UsU0FBUyxDQUFpQjtJQUMzQixRQUFRLENBQWlCO0lBQ25CLGNBQWMsQ0FBYztJQUNqQyxTQUFTLENBQWE7SUFFckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixXQUFXLENBQXFCO0lBQ2hDLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFDcEIsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFDdkMsVUFBVSxDQUF5QjtJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixLQUFLLENBQWtDO0lBQ3ZDLGVBQWUsQ0FBUztJQUNqQywyREFBMkQ7SUFDM0MsU0FBUyxDQUFTO0lBQ3pCLFFBQVEsR0FBRyxZQUFZLENBQUM7SUFDeEIsT0FBTyxHQUFHLFdBQVcsQ0FBQztJQUN0QixlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLE9BQU8sR0FBRyxXQUFXLENBQUM7SUFDdEIsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUUxQixnR0FBZ0c7SUFDekUsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDOUQsK0RBQStEO0lBQ3JELE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBRWxELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFUixNQUFNLENBQVU7SUFDaEIsU0FBUyxDQUFTO0lBRXBCLGlCQUFpQixHQUFxQixJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEdBQWUsSUFBSSxDQUFDO0lBQ3RDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFekIsWUFDVSxFQUFxQixFQUNULFlBQWdDO1FBRDVDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ1QsaUJBQVksR0FBWixZQUFZLENBQW9CO0lBQ25ELENBQUM7SUFFSixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFDSSxLQUFLLENBQUMsQ0FBTTtRQUNkLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVc7WUFDZCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUF3QixDQUFDLENBQUM7UUFDOUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO1FBRWpJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7UUFFN0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQWE7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksS0FBSztnQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWlCO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixzQkFBc0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQXFCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLENBQUMsdUJBQXVCO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBd0I7UUFDN0MsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sQ0FBQyx1QkFBdUI7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwwQkFBMEI7SUFFbEIsY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU87UUFFM0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO3VHQXZNVSxlQUFlOzJGQUFmLGVBQWUsMmtCQUhmLENBQUMsc0JBQXNCLENBQUMscVpDbENyQyx5a01BMEtBOzsyRkRySWEsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEIsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFDbEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBMkM1QyxRQUFRO3lDQXhDYSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0MsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNRLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNILFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR2lCLFlBQVk7c0JBQWxDLE1BQU07dUJBQUMsYUFBYTtnQkFFWCxNQUFNO3NCQUFmLE1BQU07Z0JBb0JNLFFBQVE7c0JBQXBCLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3gsIE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQXBwRmxvYXRMYWJlbFR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL2ZpZWxkLm1vZGVsJztcblxuY29uc3QgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXRCb29sZWFuRmllbGQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWJvb2xlYW4tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwuYm9vbGVhbi5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RFRkFVTFRfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Qm9vbGVhbkZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgSW5wdXRFbGVtZW50IHtcbiAgQFZpZXdDaGlsZCgneWVzQnV0dG9uJykgeWVzQnV0dG9uOiBNYXRSYWRpb0J1dHRvbjtcbiAgQFZpZXdDaGlsZCgnbm9CdXR0b24nKSBub0J1dHRvbjogTWF0UmFkaW9CdXR0b247XG4gIEBWaWV3Q2hpbGQoJ2NoZWNrYm94QnV0dG9uJykgY2hlY2tib3hCdXR0b246IE1hdENoZWNrYm94O1xuICBAVmlld0NoaWxkKCdmYWtlSW5wdXQnKSBmYWtlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEFwcEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb21wYWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0eWxlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8ICdidXR0b24nO1xuICBASW5wdXQoKSBidXR0b25zQ29sQ291bnQ6IG51bWJlcjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xuICBASW5wdXQoKSB5ZXNMYWJlbCA9ICdDT01NT04uWUVTJztcbiAgQElucHV0KCkgbm9MYWJlbCA9ICdDT01NT04uTk8nO1xuICBASW5wdXQoKSBzaG93QnV0dG9uSWNvbnMgPSB0cnVlO1xuICBASW5wdXQoKSB5ZXNJY29uID0gJ2NoZWNrbWFyayc7XG4gIEBJbnB1dCgpIG5vSWNvbiA9ICdjbG9zZSc7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4LEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ2tleXVwLmVudGVyJykgb25QcmVzc0VudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIHNob3dSYWRpbyA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfdmFsdWU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdGFiaW5kZXg6IG51bWJlcjtcblxuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fdGFiaW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVRhYkluZGV4KCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9XG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8ICh0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiAodGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbCkpO1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICdmb3JtQ29udHJvbCcgb3IgJ2Zvcm1Db250cm9sTmFtZScgaW4gPG1hdC1ib29sZWFuLWZpZWxkPi5cIik7XG5cbiAgICB0aGlzLnN0eWxlID0gdGhpcy5zdHlsZSB8fCAodGhpcy5jb21wYWN0ID8gJ2NoZWNrYm94JyA6ICdyYWRpbycpO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNDb2xDb3VudCA9IHRvTnVtYmVyKHRoaXMuYnV0dG9uc0NvbENvdW50LCAyKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBzaG93IHJhZGlvIGlmIGxhYmVsIGFsd2F5cyBvbiB0b3BcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRoaXMuc2hvd1JhZGlvIHx8IHRoaXMuZmxvYXRMYWJlbCA9PT0gJ2Fsd2F5cycgfHwgdGhpcy5zdHlsZSA9PT0gJ2NoZWNrYm94JztcblxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zaG93UmFkaW8gPSB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnIHx8IHRoaXMuc3R5bGUgPT09ICdjaGVja2JveCcgfHwgaXNOb3ROaWwodGhpcy5fdmFsdWUpO1xuICAgICAgaWYgKGlzTm90TmlsKHRoaXMudGFiaW5kZXgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50KSB0aGlzLm9uUHJlc3NFbnRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgICAgdGhpcy55ZXNCdXR0b24uZm9jdXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveEJ1dHRvbikge1xuICAgICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUmFkaW9WYWx1ZUNoYW5nZWQoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LnZhbHVlKTtcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkNoZWNrYm94VmFsdWVDaGFuZ2VkKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG4gICAgdGhpcy5fdmFsdWUgPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBjaGVja0lmVG91Y2hlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSwgYmVjYXVzZSwgdGhpcyBjb21wb25lbnQgaGFzIGEgdGVtcG9yYXJ5IGNvbXBvbmVudCBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmaXJzdCBmb2N1cyBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fdGFiaW5kZXgpIHx8IHRoaXMuX3RhYmluZGV4ID09PSAtMSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuZmFrZUlucHV0KSB7XG4gICAgICBpZiAodGhpcy5zaG93UmFkaW8pIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuX3RhYmluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgIHRoaXMueWVzQnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1JhZGlvID8gdGhpcy5fdGFiaW5kZXggOiAtMTtcbiAgICAgIHRoaXMubm9CdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCArIDEgOiAtMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tib3hCdXR0b24pIHtcbiAgICAgIHRoaXMuY2hlY2tib3hCdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCA6IC0xO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwicmVhZG9ubHk7IGVsc2Ugd3JpdGFibGVcIlxuICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge3sgY2xhc3NMaXN0IH19XCJcbj5cbiAgPGRpdiBtYXRQcmVmaXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgPGlvbi10ZXh0Pnt7ICh2YWx1ZSA9PT0gbnVsbCA/ICdDT01NT04uRU1QVFlfT1BUSU9OJyA6IHZhbHVlID09PSB0cnVlID8geWVzTGFiZWwgOiBub0xhYmVsKSB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRleHQ+XG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjxuZy10ZW1wbGF0ZSAjd3JpdGFibGU+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInN0eWxlXCI+XG4gICAgPCEtLSBSYWRpbyAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cInNob3dSYWRpbyAmJiAoIWZsb2F0TGFiZWwgfHwgZmxvYXRMYWJlbCA9PT0gJ2F1dG8nKSA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtcmFkaW8ge3sgY2xhc3NMaXN0IH19XCJcbiAgICA+XG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgZmxvYXRMYWJlbCAhPT0gJ25ldmVyJ1wiIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICA8c3BhbiBbaGlkZGVuXT1cInNob3dSYWRpb1wiPih7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fS97eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19KTwvc3Bhbj5cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgI2Zha2VJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzRmFrZUlucHV0KCRldmVudClcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJzaG93UmFkaW9cIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgLz5cblxuICAgICAgPCEtLSByYWRpbyBidXR0b24gLS0+XG4gICAgICA8bWF0LXJhZGlvLWdyb3VwIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIChjaGFuZ2UpPVwib25SYWRpb1ZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICN5ZXNCdXR0b24gW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICA8c3Bhbj57eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAmbmJzcDtcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI25vQnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IG5vTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiXG4gICAgICBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1jaGVja2JveCB7eyBjbGFzc0xpc3QgfX1cIlxuICAgID5cbiAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgICNtYXRJbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCJcbiAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgIC8+XG5cbiAgICAgIDwhLS0gY2hlY2tib3gsIHdoZW4gY29tcGFjdCAtLT5cbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgI2NoZWNrYm94QnV0dG9uXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwidmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICA+PC9tYXQtY2hlY2tib3g+XG5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJwbGFjZWhvbGRlcjsgZWxzZSBub1BsYWNlSG9sZGVyXCIgW3RpdGxlXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L21hdC1sYWJlbD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QbGFjZUhvbGRlcj5cbiAgICAgICAgPG1hdC1sYWJlbD4mbmJzcDs8L21hdC1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBCdXR0b25zIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIididXR0b24nXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1idXR0b24ge3sgY2xhc3NMaXN0IH19XCJcbiAgICA+XG4gICAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGhpZGRlblxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25zXCJcbiAgICAgICAgW3N0eWxlLi0tYnV0dG9ucy1jb2wtY291bnRdPVwiYnV0dG9uc0NvbENvdW50XCJcbiAgICAgICAgKm5nSWY9XCIhZm9ybUNvbnRyb2wuZGlzYWJsZWQ7IGVsc2UgZGlzYWJsZWRMYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0geWVzIC0tPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiX3RhYmluZGV4XCJcbiAgICAgICAgICAoY2xpY2spPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICBbY29sb3JdPVwiX3ZhbHVlID09PSBudWxsID8gJ3RlcnRpYXJ5JyA6IF92YWx1ZSA9PT0gdHJ1ZSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gKm5nSWY9XCJzaG93QnV0dG9uSWNvbnMgJiYgeWVzSWNvbjsgbGV0IGljb25cIiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJpY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPCEtLSBObyBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25cIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXggIT09IHVuZGVmaW5lZCA/IF90YWJpbmRleCArIDEgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ3cml0ZVZhbHVlKGZhbHNlLCAkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZShmYWxzZSwgJGV2ZW50KVwiXG4gICAgICAgICAgW2NvbG9yXT1cIl92YWx1ZSA9PT0gbnVsbCA/ICd0ZXJ0aWFyeScgOiBfdmFsdWUgPT09IGZhbHNlID8gJ2FjY2VudCcgOiAnbGlnaHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29ucyAmJiBub0ljb247IGxldCBpY29uXCIgc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAge3sgbm9MYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRMYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD48aSB0cmFuc2xhdGU+Q09NTU9OLkVNUFRZX09QVElPTjwvaT48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21hdFN1ZmZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBNEMsaUJBQWlCLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFJakgsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBRzVELE1BQU0sc0JBQXNCLEdBQWE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFTdEIsTUFBTSxPQUFPLGVBQWU7SUF3Q2hCO0lBQ1k7SUF4Q0UsU0FBUyxDQUFpQjtJQUMzQixRQUFRLENBQWlCO0lBQ25CLGNBQWMsQ0FBYztJQUNqQyxTQUFTLENBQWE7SUFFckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixXQUFXLENBQXFCO0lBQ2hDLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFDcEIsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFDdkMsVUFBVSxDQUF5QjtJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pC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U0FBUzt1QkFBQyxVQUFVO2dCQUNRLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNILFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR2lCLFlBQVk7c0JBQWxDLE1BQU07dUJBQUMsYUFBYTtnQkFFWCxNQUFNO3NCQUFmLE1BQU07Z0JBb0JNLFFBQVE7c0JBQXBCLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3gsIE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQXBwRmxvYXRMYWJlbFR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL2ZpZWxkLm1vZGVsJztcblxuY29uc3QgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXRCb29sZWFuRmllbGQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWJvb2xlYW4tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwuYm9vbGVhbi5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RFRkFVTFRfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Qm9vbGVhbkZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgSW5wdXRFbGVtZW50IHtcbiAgQFZpZXdDaGlsZCgneWVzQnV0dG9uJykgeWVzQnV0dG9uOiBNYXRSYWRpb0J1dHRvbjtcbiAgQFZpZXdDaGlsZCgnbm9CdXR0b24nKSBub0J1dHRvbjogTWF0UmFkaW9CdXR0b247XG4gIEBWaWV3Q2hpbGQoJ2NoZWNrYm94QnV0dG9uJykgY2hlY2tib3hCdXR0b246IE1hdENoZWNrYm94O1xuICBAVmlld0NoaWxkKCdmYWtlSW5wdXQnKSBmYWtlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEFwcEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb21wYWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0eWxlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8ICdidXR0b24nO1xuICBASW5wdXQoKSBidXR0b25zQ29sQ291bnQ6IG51bWJlcjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xuICBASW5wdXQoKSB5ZXNMYWJlbCA9ICdDT01NT04uWUVTJztcbiAgQElucHV0KCkgbm9MYWJlbCA9ICdDT01NT04uTk8nO1xuICBASW5wdXQoKSBzaG93QnV0dG9uSWNvbnMgPSB0cnVlO1xuICBASW5wdXQoKSB5ZXNJY29uID0gJ2NoZWNrbWFyayc7XG4gIEBJbnB1dCgpIG5vSWNvbiA9ICdjbG9zZSc7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4LEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ2tleXVwLmVudGVyJykgb25QcmVzc0VudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIHNob3dSYWRpbyA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfdmFsdWU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdGFiaW5kZXg6IG51bWJlcjtcblxuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fdGFiaW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVRhYkluZGV4KCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9XG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8ICh0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiAodGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbCkpO1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICdmb3JtQ29udHJvbCcgb3IgJ2Zvcm1Db250cm9sTmFtZScgaW4gPG1hdC1ib29sZWFuLWZpZWxkPi5cIik7XG5cbiAgICB0aGlzLnN0eWxlID0gdGhpcy5zdHlsZSB8fCAodGhpcy5jb21wYWN0ID8gJ2NoZWNrYm94JyA6ICdyYWRpbycpO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNDb2xDb3VudCA9IHRvTnVtYmVyKHRoaXMuYnV0dG9uc0NvbENvdW50LCAyKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBzaG93IHJhZGlvIGlmIGxhYmVsIGFsd2F5cyBvbiB0b3BcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRoaXMuc2hvd1JhZGlvIHx8IHRoaXMuZmxvYXRMYWJlbCA9PT0gJ2Fsd2F5cycgfHwgdGhpcy5zdHlsZSA9PT0gJ2NoZWNrYm94JztcblxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zaG93UmFkaW8gPSB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnIHx8IHRoaXMuc3R5bGUgPT09ICdjaGVja2JveCcgfHwgaXNOb3ROaWwodGhpcy5fdmFsdWUpO1xuICAgICAgaWYgKGlzTm90TmlsKHRoaXMudGFiaW5kZXgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50KSB0aGlzLm9uUHJlc3NFbnRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgICAgdGhpcy55ZXNCdXR0b24uZm9jdXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveEJ1dHRvbikge1xuICAgICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUmFkaW9WYWx1ZUNoYW5nZWQoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LnZhbHVlKTtcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkNoZWNrYm94VmFsdWVDaGFuZ2VkKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG4gICAgdGhpcy5fdmFsdWUgPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBjaGVja0lmVG91Y2hlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSwgYmVjYXVzZSwgdGhpcyBjb21wb25lbnQgaGFzIGEgdGVtcG9yYXJ5IGNvbXBvbmVudCBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmaXJzdCBmb2N1cyBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fdGFiaW5kZXgpIHx8IHRoaXMuX3RhYmluZGV4ID09PSAtMSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuZmFrZUlucHV0KSB7XG4gICAgICBpZiAodGhpcy5zaG93UmFkaW8pIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuX3RhYmluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgIHRoaXMueWVzQnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1JhZGlvID8gdGhpcy5fdGFiaW5kZXggOiAtMTtcbiAgICAgIHRoaXMubm9CdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCArIDEgOiAtMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tib3hCdXR0b24pIHtcbiAgICAgIHRoaXMuY2hlY2tib3hCdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCA6IC0xO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiQGlmIChyZWFkb25seSkge1xuPG1hdC1mb3JtLWZpZWxkXG4gIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZCB7eyBjbGFzc0xpc3QgfX1cIlxuPlxuICA8ZGl2IG1hdFByZWZpeD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gdHlwZT1cInRleHRcIiByZWFkb25seSBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAvPlxuICA8aW9uLXRleHQ+e3sgKHZhbHVlID09PSBudWxsID8gJ0NPTU1PTi5FTVBUWV9PUFRJT04nIDogdmFsdWUgPT09IHRydWUgPyB5ZXNMYWJlbCA6IG5vTGFiZWwpIHwgdHJhbnNsYXRlIH19PC9pb24tdGV4dD5cbiAgPGRpdiBtYXRTdWZmaXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9tYXQtZm9ybS1maWVsZD5cbn1cbkBlbHNlIHtcbiAgQHN3aXRjaChzdHlsZSkge1xuICAgIDwhLS0gUmFkaW8gLS0+XG4gICAgQGNhc2UoJ3JhZGlvJykge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cInNob3dSYWRpbyAmJiAoIWZsb2F0TGFiZWwgfHwgZmxvYXRMYWJlbCA9PT0gJ2F1dG8nKSA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBjbGFzcz1cIm1hdC1ib29sZWFuLWZpZWxkIG1hdC1ib29sZWFuLWZpZWxkLXJhZGlvIHt7IGNsYXNzTGlzdCB9fVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJwbGFjZWhvbGRlciAmJiBmbG9hdExhYmVsICE9PSAnbmV2ZXInXCIgW3RpdGxlXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cInNob3dSYWRpb1wiPih7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fS97eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19KTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAjZmFrZUlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dSYWRpb1wiXG4gICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8IS0tIHJhZGlvIGJ1dHRvbiAtLT5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBbaGlkZGVuXT1cIiFzaG93UmFkaW9cIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAoY2hhbmdlKT1cIm9uUmFkaW9WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICN5ZXNCdXR0b24gW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHllc0xhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAjbm9CdXR0b24gW3ZhbHVlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG5cbiAgICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICB9XG5cbiAgICA8IS0tIENoZWNrYm94IC0tPlxuICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgZmxvYXRMYWJlbD1cImFsd2F5c1wiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBjbGFzcz1cIm1hdC1ib29sZWFuLWZpZWxkIG1hdC1ib29sZWFuLWZpZWxkLWNoZWNrYm94IHt7IGNsYXNzTGlzdCB9fVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAjbWF0SW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzRmFrZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDwhLS0gY2hlY2tib3gsIHdoZW4gY29tcGFjdCAtLT5cbiAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICNjaGVja2JveEJ1dHRvblxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94VmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWRcIlxuICAgICAgICAgIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiXG4gICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJwbGFjZWhvbGRlcjsgZWxzZSBub1BsYWNlSG9sZGVyXCIgW3RpdGxlXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QbGFjZUhvbGRlcj5cbiAgICAgICAgICA8bWF0LWxhYmVsPiZuYnNwOzwvbWF0LWxhYmVsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgfVxuXG4gICAgPCEtLSBCdXR0b25zIC0tPlxuICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cIidhbHdheXMnXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtYnV0dG9uIHt7IGNsYXNzTGlzdCB9fVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYocGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICA8bWF0LWxhYmVsIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtbGFiZWw+Jm5ic3A7PC9tYXQtbGFiZWw+XG4gICAgICAgIH1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoZm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICA8aW9uLWxhYmVsPjxpIHRyYW5zbGF0ZT5DT01NT04uRU1QVFlfT1BUSU9OPC9pPjwvaW9uLWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uc1wiIFtzdHlsZS4tLWJ1dHRvbnMtY29sLWNvdW50XT1cImJ1dHRvbnNDb2xDb3VudFwiPlxuICAgICAgICAgICAgPCEtLSB5ZXMgLS0+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIndyaXRlVmFsdWUodHJ1ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJfdmFsdWUgPT09IG51bGwgPyAndGVydGlhcnknIDogX3ZhbHVlID09PSB0cnVlID8gJ2FjY2VudCcgOiAnbGlnaHQnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uICpuZ0lmPVwic2hvd0J1dHRvbkljb25zICYmIHllc0ljb247IGxldCBpY29uXCIgc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IHllc0xhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDwhLS0gTm8gYnV0dG9uIC0tPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25cIlxuICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiX3RhYmluZGV4ICE9PSB1bmRlZmluZWQgPyBfdGFiaW5kZXggKyAxIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIndyaXRlVmFsdWUoZmFsc2UsICRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZShmYWxzZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJfdmFsdWUgPT09IG51bGwgPyAndGVydGlhcnknIDogX3ZhbHVlID09PSBmYWxzZSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29ucyAmJiBub0ljb247IGxldCBpY29uXCIgc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IG5vTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0U3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIH1cbiAgfVxufVxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21hdFN1ZmZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -12,7 +12,8 @@ export class BooleanTestPage extends AppForm {
|
|
|
12
12
|
formBuilder;
|
|
13
13
|
cd;
|
|
14
14
|
stringify = JSON.stringify;
|
|
15
|
-
mode = 'radio';
|
|
15
|
+
//mode: 'radio' | 'checkbox' | 'button' = 'radio';
|
|
16
|
+
mode = 'button';
|
|
16
17
|
styles = ['radio', 'checkbox', 'button'];
|
|
17
18
|
constructor(injector, formBuilder, cd) {
|
|
18
19
|
super(injector);
|
|
@@ -50,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
50
51
|
type: Component,
|
|
51
52
|
args: [{ selector: 'app-boolean-test-page', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Boolean field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'radio'\" (click)=\"toggleMode('radio')\">\n <mat-label>Radio</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'checkbox'\" (click)=\"toggleMode('checkbox')\">\n <mat-label>Checkbox</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'button'\" (click)=\"toggleMode('button')\">\n <mat-label>Button</mat-label>\n </a>\n </nav>\n\n <form #tabPanel [formGroup]=\"form\" class=\"form-container ion-padding\">\n <ng-container\n *ngFor=\"let style of styles\"\n [ngTemplateOutlet]=\"components\"\n [ngTemplateOutletContext]=\"{ style: style }\"\n ></ng-container>\n\n <ng-template #components let-style=\"style\">\n <ion-grid *ngIf=\"style === mode\">\n <ion-row>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled empty</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.disabledEmpty?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"disabledEmpty\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled false</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.disabledFalse?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"disabledFalse\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled true</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.disabledTrue?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"disabledTrue\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled empty</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledEmpty?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"enabledEmpty\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled false</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledFalse?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"enabledFalse\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled true</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledTrue?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field\n [style]=\"style\"\n formControlName=\"enabledTrue\"\n placeholder=\"Placeholder\"\n ></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled empty (no placeholder)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledEmpty?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field [style]=\"style\" formControlName=\"enabledEmpty\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled false (no placeholder)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledFalse?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field [style]=\"style\" formControlName=\"enabledFalse\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n <ion-col size=\"4\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Enabled true (no placeholder)</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre style=\"white-space: break-spaces\">{{ stringify(form.controls.enabledTrue?.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-boolean-field [style]=\"style\" formControlName=\"enabledTrue\"></mat-boolean-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ng-template>\n </form>\n</ion-content>\n" }]
|
|
52
53
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi50ZXN0LnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL3Rlc3RpbmcvYm9vbGVhbi50ZXN0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL3Rlc3RpbmcvYm9vbGVhbi50ZXN0LnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQU8zRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxPQUFZO0lBTW5DO0lBQ0E7SUFDQTtJQVBaLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNCLElBQUksR0FBb0MsT0FBTyxDQUFDO0lBQ2hELE1BQU0sR0FBYSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFbkQsWUFDWSxRQUFrQixFQUNsQixXQUErQixFQUMvQixFQUFxQjtRQUUvQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKTixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUcvQixJQUFJLENBQUMsT0FBTyxDQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3JCLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNyQixhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQztZQUNwQixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDckIsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ3BCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzt1R0F2Q1UsZUFBZTsyRkFBZixlQUFlLG9GQ1I1QiwwbVNBNk9BOzsyRkRyT2EsZUFBZTtrQkFKM0IsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9mb3JtL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYm9vbGVhbi10ZXN0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9vbGVhbi50ZXN0LnBhZ2UuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEJvb2xlYW5UZXN0UGFnZSBleHRlbmRzIEFwcEZvcm08YW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHN0cmluZ2lmeSA9IEpTT04uc3RyaW5naWZ5O1xuICBtb2RlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8ICdidXR0b24nID0gJ3JhZGlvJztcbiAgc3R5bGVzOiBzdHJpbmdbXSA9IFsncmFkaW8nLCAnY2hlY2tib3gnLCAnYnV0dG9uJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLnNldEZvcm0oXG4gICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgZGlzYWJsZWRFbXB0eTogW251bGxdLFxuICAgICAgICBkaXNhYmxlZEZhbHNlOiBbZmFsc2VdLFxuICAgICAgICBkaXNhYmxlZFRydWU6IFt0cnVlXSxcbiAgICAgICAgZW5hYmxlZEVtcHR5OiBbbnVsbF0sXG4gICAgICAgIGVuYWJsZWRGYWxzZTogW2ZhbHNlXSxcbiAgICAgICAgZW5hYmxlZFRydWU6IFt0cnVlXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0uZ2V0KCdlbmFibGVkRW1wdHknKS5lbmFibGUoKTtcbiAgICB0aGlzLmZvcm0uZ2V0KCdlbmFibGVkRmFsc2UnKS5lbmFibGUoKTtcbiAgICB0aGlzLmZvcm0uZ2V0KCdlbmFibGVkVHJ1ZScpLmVuYWJsZSgpO1xuICB9XG5cbiAgdG9nZ2xlTW9kZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLm1vZGUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5Cb29sZWFuIGZpZWxkIHRlc3QgcGFnZTwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQ+XG4gIDxuYXYgbWF0LXRhYi1uYXYtYmFyIFt0YWJQYW5lbF09XCJ0YWJQYW5lbFwiPlxuICAgIDxhIG1hdC10YWItbGluayBbYWN0aXZlXT1cIm1vZGUgPT09ICdyYWRpbydcIiAoY2xpY2spPVwidG9nZ2xlTW9kZSgncmFkaW8nKVwiPlxuICAgICAgPG1hdC1sYWJlbD5SYWRpbzwvbWF0LWxhYmVsPlxuICAgIDwvYT5cbiAgICA8YSBtYXQtdGFiLWxpbmsgW2FjdGl2ZV09XCJtb2RlID09PSAnY2hlY2tib3gnXCIgKGNsaWNrKT1cInRvZ2dsZU1vZGUoJ2NoZWNrYm94JylcIj5cbiAgICAgIDxtYXQtbGFiZWw+Q2hlY2tib3g8L21hdC1sYWJlbD5cbiAgICA8L2E+XG4gICAgPGEgbWF0LXRhYi1saW5rIFthY3RpdmVdPVwibW9kZSA9PT0gJ2J1dHRvbidcIiAoY2xpY2spPVwidG9nZ2xlTW9kZSgnYnV0dG9uJylcIj5cbiAgICAgIDxtYXQtbGFiZWw+QnV0dG9uPC9tYXQtbGFiZWw+XG4gICAgPC9hPlxuICA8L25hdj5cblxuICA8Zm9ybSAjdGFiUGFuZWwgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBpb24tcGFkZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCBzdHlsZSBvZiBzdHlsZXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tcG9uZW50c1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzdHlsZTogc3R5bGUgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRzIGxldC1zdHlsZT1cInN0eWxlXCI+XG4gICAgICA8aW9uLWdyaWQgKm5nSWY9XCJzdHlsZSA9PT0gbW9kZVwiPlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RGlzYWJsZWQgZW1wdHk8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5kaXNhYmxlZEVtcHR5Py52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpc2FibGVkRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5EaXNhYmxlZCBmYWxzZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmRpc2FibGVkRmFsc2U/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzYWJsZWRGYWxzZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+PC9tYXQtYm9vbGVhbi1maWVsZD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkRpc2FibGVkIHRydWU8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5kaXNhYmxlZFRydWU/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzYWJsZWRUcnVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgID48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW5hYmxlZCBlbXB0eTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVuYWJsZWRFbXB0eT8udmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWJvb2xlYW4tZmllbGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5FbmFibGVkIGZhbHNlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW5hYmxlZEZhbHNlPy52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRGYWxzZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+PC9tYXQtYm9vbGVhbi1maWVsZD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkVuYWJsZWQgdHJ1ZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVuYWJsZWRUcnVlPy52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRUcnVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgID48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW5hYmxlZCBlbXB0eSAobm8gcGxhY2Vob2xkZXIpPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW5hYmxlZEVtcHR5Py52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZCBbc3R5bGVdPVwic3R5bGVcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkRW1wdHlcIj48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW5hYmxlZCBmYWxzZSAobm8gcGxhY2Vob2xkZXIpPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW5hYmxlZEZhbHNlPy52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZCBbc3R5bGVdPVwic3R5bGVcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkRmFsc2VcIj48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW5hYmxlZCB0cnVlIChubyBwbGFjZWhvbGRlcik8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbmFibGVkVHJ1ZT8udmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWJvb2xlYW4tZmllbGQgW3N0eWxlXT1cInN0eWxlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZFRydWVcIj48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgPC9pb24tZ3JpZD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi50ZXN0LnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL3Rlc3RpbmcvYm9vbGVhbi50ZXN0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL3Rlc3RpbmcvYm9vbGVhbi50ZXN0LnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQU8zRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxPQUFZO0lBT25DO0lBQ0E7SUFDQTtJQVJaLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNCLGtEQUFrRDtJQUNsRCxJQUFJLEdBQW9DLFFBQVEsQ0FBQztJQUNqRCxNQUFNLEdBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELFlBQ1ksUUFBa0IsRUFDbEIsV0FBK0IsRUFDL0IsRUFBcUI7UUFFL0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSk4sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFHL0IsSUFBSSxDQUFDLE9BQU8sQ0FDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNyQixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDckIsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3RCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQztZQUNwQixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDcEIsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3JCLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNwQixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7dUdBeENVLGVBQWU7MkZBQWYsZUFBZSxvRkNSNUIsMG1TQTZPQTs7MkZEck9hLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwRm9ybSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJvb2xlYW4tdGVzdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2xlYW4udGVzdC5wYWdlLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuVGVzdFBhZ2UgZXh0ZW5kcyBBcHBGb3JtPGFueT4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBzdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeTtcbiAgLy9tb2RlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8ICdidXR0b24nID0gJ3JhZGlvJztcbiAgbW9kZTogJ3JhZGlvJyB8ICdjaGVja2JveCcgfCAnYnV0dG9uJyA9ICdidXR0b24nO1xuICBzdHlsZXM6IHN0cmluZ1tdID0gWydyYWRpbycsICdjaGVja2JveCcsICdidXR0b24nXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIHRoaXMuc2V0Rm9ybShcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBkaXNhYmxlZEVtcHR5OiBbbnVsbF0sXG4gICAgICAgIGRpc2FibGVkRmFsc2U6IFtmYWxzZV0sXG4gICAgICAgIGRpc2FibGVkVHJ1ZTogW3RydWVdLFxuICAgICAgICBlbmFibGVkRW1wdHk6IFtudWxsXSxcbiAgICAgICAgZW5hYmxlZEZhbHNlOiBbZmFsc2VdLFxuICAgICAgICBlbmFibGVkVHJ1ZTogW3RydWVdLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZWRFbXB0eScpLmVuYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZWRGYWxzZScpLmVuYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZWRUcnVlJykuZW5hYmxlKCk7XG4gIH1cblxuICB0b2dnbGVNb2RlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMubW9kZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMubW9kZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPkJvb2xlYW4gZmllbGQgdGVzdCBwYWdlPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudD5cbiAgPG5hdiBtYXQtdGFiLW5hdi1iYXIgW3RhYlBhbmVsXT1cInRhYlBhbmVsXCI+XG4gICAgPGEgbWF0LXRhYi1saW5rIFthY3RpdmVdPVwibW9kZSA9PT0gJ3JhZGlvJ1wiIChjbGljayk9XCJ0b2dnbGVNb2RlKCdyYWRpbycpXCI+XG4gICAgICA8bWF0LWxhYmVsPlJhZGlvPC9tYXQtbGFiZWw+XG4gICAgPC9hPlxuICAgIDxhIG1hdC10YWItbGluayBbYWN0aXZlXT1cIm1vZGUgPT09ICdjaGVja2JveCdcIiAoY2xpY2spPVwidG9nZ2xlTW9kZSgnY2hlY2tib3gnKVwiPlxuICAgICAgPG1hdC1sYWJlbD5DaGVja2JveDwvbWF0LWxhYmVsPlxuICAgIDwvYT5cbiAgICA8YSBtYXQtdGFiLWxpbmsgW2FjdGl2ZV09XCJtb2RlID09PSAnYnV0dG9uJ1wiIChjbGljayk9XCJ0b2dnbGVNb2RlKCdidXR0b24nKVwiPlxuICAgICAgPG1hdC1sYWJlbD5CdXR0b248L21hdC1sYWJlbD5cbiAgICA8L2E+XG4gIDwvbmF2PlxuXG4gIDxmb3JtICN0YWJQYW5lbCBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZvcm0tY29udGFpbmVyIGlvbi1wYWRkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IHN0eWxlIG9mIHN0eWxlc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21wb25lbnRzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0eWxlOiBzdHlsZSB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudHMgbGV0LXN0eWxlPVwic3R5bGVcIj5cbiAgICAgIDxpb24tZ3JpZCAqbmdJZj1cInN0eWxlID09PSBtb2RlXCI+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5EaXNhYmxlZCBlbXB0eTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmRpc2FibGVkRW1wdHk/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzYWJsZWRFbXB0eVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+PC9tYXQtYm9vbGVhbi1maWVsZD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkRpc2FibGVkIGZhbHNlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZGlzYWJsZWRGYWxzZT8udmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWJvb2xlYW4tZmllbGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNhYmxlZEZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgID48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RGlzYWJsZWQgdHJ1ZTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmRpc2FibGVkVHJ1ZT8udmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWJvb2xlYW4tZmllbGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNhYmxlZFRydWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5FbmFibGVkIGVtcHR5PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW5hYmxlZEVtcHR5Py52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRFbXB0eVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICA+PC9tYXQtYm9vbGVhbi1maWVsZD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkVuYWJsZWQgZmFsc2U8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbmFibGVkRmFsc2U/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZEZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgID48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+RW5hYmxlZCB0cnVlPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzXCI+e3sgc3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZW5hYmxlZFRydWU/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZFRydWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5FbmFibGVkIGVtcHR5IChubyBwbGFjZWhvbGRlcik8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbmFibGVkRW1wdHk/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkIFtzdHlsZV09XCJzdHlsZVwiIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRFbXB0eVwiPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5FbmFibGVkIGZhbHNlIChubyBwbGFjZWhvbGRlcik8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT1cIndoaXRlLXNwYWNlOiBicmVhay1zcGFjZXNcIj57eyBzdHJpbmdpZnkoZm9ybS5jb250cm9scy5lbmFibGVkRmFsc2U/LnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkIFtzdHlsZV09XCJzdHlsZVwiIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRGYWxzZVwiPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5FbmFibGVkIHRydWUgKG5vIHBsYWNlaG9sZGVyKTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPVwid2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlc1wiPnt7IHN0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVuYWJsZWRUcnVlPy52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZCBbc3R5bGVdPVwic3R5bGVcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkVHJ1ZVwiPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1ncmlkPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -5434,11 +5434,11 @@ class MatBooleanField {
|
|
|
5434
5434
|
this.cd.markForCheck();
|
|
5435
5435
|
}
|
|
5436
5436
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatBooleanField, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$3.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
5437
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [DEFAULT_VALUE_ACCESSOR$4], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "<mat-form-field\n *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n <!-- Radio -->\n <mat-form-field\n *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field\n *ngSwitchCase=\"'checkbox'\"\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field\n *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n />\n <div\n class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\"\n >\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ng-container>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i1$2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1$2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1$2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1$2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5437
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [DEFAULT_VALUE_ACCESSOR$4], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "@if (readonly) {\n<mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n}\n@else {\n @switch(style) {\n <!-- Radio -->\n @case('radio') {\n <mat-form-field\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Checkbox -->\n @case ('checkbox') {\n <mat-form-field\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Buttons -->\n @case ('button') {\n <mat-form-field\n [floatLabel]=\"'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(placeholder) {\n <mat-label [title]=\"placeholder\">{{ placeholder }}</mat-label>\n } @else {\n <mat-label> </mat-label>\n }\n\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [required]=\"required\"\n />\n @if (formControl.disabled) {\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n }\n @else {\n <div class=\"mat-form-field-buttons\" [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n }\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n }\n}\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1$2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1$2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1$2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5438
5438
|
}
|
|
5439
5439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatBooleanField, decorators: [{
|
|
5440
5440
|
type: Component,
|
|
5441
|
-
args: [{ selector: 'mat-boolean-field', providers: [DEFAULT_VALUE_ACCESSOR$4], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n
|
|
5441
|
+
args: [{ selector: 'mat-boolean-field', providers: [DEFAULT_VALUE_ACCESSOR$4], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (readonly) {\n<mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n}\n@else {\n @switch(style) {\n <!-- Radio -->\n @case('radio') {\n <mat-form-field\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" [title]=\"placeholder\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Checkbox -->\n @case ('checkbox') {\n <mat-form-field\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\" [title]=\"placeholder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n\n <!-- Buttons -->\n @case ('button') {\n <mat-form-field\n [floatLabel]=\"'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(placeholder) {\n <mat-label [title]=\"placeholder\">{{ placeholder }}</mat-label>\n } @else {\n <mat-label> </mat-label>\n }\n\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [required]=\"required\"\n />\n @if (formControl.disabled) {\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n }\n @else {\n <div class=\"mat-form-field-buttons\" [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n }\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n }\n }\n}\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2) - 4px);flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"] }]
|
|
5442
5442
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$3.FormGroupDirective, decorators: [{
|
|
5443
5443
|
type: Optional
|
|
5444
5444
|
}] }], propDecorators: { yesButton: [{
|
|
@@ -38928,7 +38928,8 @@ class BooleanTestPage extends AppForm {
|
|
|
38928
38928
|
formBuilder;
|
|
38929
38929
|
cd;
|
|
38930
38930
|
stringify = JSON.stringify;
|
|
38931
|
-
mode = 'radio';
|
|
38931
|
+
//mode: 'radio' | 'checkbox' | 'button' = 'radio';
|
|
38932
|
+
mode = 'button';
|
|
38932
38933
|
styles = ['radio', 'checkbox', 'button'];
|
|
38933
38934
|
constructor(injector, formBuilder, cd) {
|
|
38934
38935
|
super(injector);
|