UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

220 lines 28.5 kB
import { __decorate, __metadata } from "tslib"; import { Component, Injector, Input } from '@angular/core'; import { Validators } from '@angular/forms'; import { SmeSchemaProperty } from '../../../schema/schema-decorator'; import { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component'; import { SchemaPrimitiveType } from '../../../schema/schema-models'; import { SmeInternalFormFieldComponent } from '../form-field.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "../form-field-accessor.directive"; import * as i3 from "../form-field-validator.directive"; import * as i4 from "../form-field-async-validator.directive"; import * as i5 from "../../../tooltip/tooltip.directive"; import * as i6 from "../../validation-alert/validation-alert.component"; import * as i7 from "../../form-field-layout/form-field-layout.component"; const _c0 = ["type", "slider"]; /* eslint-disable max-len */ /* eslint-enable max-len */ export class SliderFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent { } /** @nocollapse */ SliderFormFieldLoaderComponent.ɵfac = /** @pureOrBreakMyCode */ function () { let ɵSliderFormFieldLoaderComponent_BaseFactory; return function SliderFormFieldLoaderComponent_Factory(t) { return (ɵSliderFormFieldLoaderComponent_BaseFactory || (ɵSliderFormFieldLoaderComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SliderFormFieldLoaderComponent)))(t || SliderFormFieldLoaderComponent); }; }(); /** @nocollapse */ SliderFormFieldLoaderComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SliderFormFieldLoaderComponent, selectors: [["ng-component"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 13, consts: [["type", "slider", 3, "ngModel", "name", "label", "description", "required", "min", "readonly", "disabled", "max", "step", "pendingMessage", "customAsyncValidateDisabled", "customAsyncValidateDebounceTime", "ngModelChange", "customValidate", "customAsyncValidate"], ["field", ""]], template: function SliderFormFieldLoaderComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "sme-form-field", 0, 1); i0.ɵɵlistener("ngModelChange", function SliderFormFieldLoaderComponent_Template_sme_form_field_ngModelChange_0_listener($event) { return ctx.data = $event; })("customValidate", function SliderFormFieldLoaderComponent_Template_sme_form_field_customValidate_0_listener($event) { return ctx.resolveFunction(ctx.propertySchema.customValidation)($event); })("customAsyncValidate", function SliderFormFieldLoaderComponent_Template_sme_form_field_customAsyncValidate_0_listener($event) { return ctx.propertySchema.customAsyncValidation && ctx.resolveFunction(ctx.propertySchema.customAsyncValidation.handler)($event); }); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵproperty("ngModel", ctx.data)("name", ctx.propertySchema.name)("label", ctx.localize(ctx.propertySchema.label))("description", ctx.localize(ctx.propertySchema.description))("required", ctx.propertySchema.required)("min", ctx.propertySchema.options.min)("readonly", !!ctx.evalExpression(ctx.propertySchema.readonlyCondition))("disabled", !!(ctx.propertySchema.disabledCondition && ctx.evalExpression(ctx.propertySchema.disabledCondition)))("max", ctx.propertySchema.options.max)("step", ctx.propertySchema.options.step)("pendingMessage", ctx.propertySchema.customAsyncValidation && ctx.localize(ctx.propertySchema.customAsyncValidation.pendingMessage))("customAsyncValidateDisabled", ctx.shouldCustomAsyncValidationBeDisabled())("customAsyncValidateDebounceTime", ctx.propertySchema.customAsyncValidation && +ctx.propertySchema.customAsyncValidation.handler); } }, dependencies: function () { return [i1.NgControlStatus, i1.RequiredValidator, i1.NgModel, SliderFormFieldComponent, i2.FormFieldAccessorDirective, i3.FormFieldValidatorDirective, i4.FormFieldAsyncValidatorDirective]; }, encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderFormFieldLoaderComponent, [{ type: Component, args: [{ template: ` <sme-form-field #field type="slider" [(ngModel)]="data" [name]="propertySchema.name" [label]="localize(propertySchema.label)" [description]="localize(propertySchema.description)" [required]="propertySchema.required" [min]="propertySchema.options.min" [readonly]="!!evalExpression(propertySchema.readonlyCondition)" [disabled]="!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))" [max]="propertySchema.options.max" [step]="propertySchema.options.step" (customValidate)="resolveFunction(propertySchema.customValidation)($event)" (customAsyncValidate)="propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)" [pendingMessage]="propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)" [customAsyncValidateDisabled]="shouldCustomAsyncValidationBeDisabled()" [customAsyncValidateDebounceTime]="propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler" > </sme-form-field> ` }] }], null, null); })(); /** * Accessible range field implementation as a slider */ let SliderFormFieldComponent = class SliderFormFieldComponent extends SmeInternalFormFieldComponent { /** * Initializes a new instance of the SliderFormFieldComponent */ constructor(injector) { super(injector); this.step = 1; this.min = 0; this.max = 100; } /** * The source name to use for logging */ get logSourceName() { return 'SliderFormFieldComponent'; } /** * Indicates the default value for immediateValidation. * This is meant to be overridden by derived classes */ get defaultImmediateValidation() { return true; } /** * Creates the idBag used by this component to store unique element ids. * id values will be assigned be the @see BaseComponent super class. */ createIdBag() { return { detailsSpan: '' }; } /** * Determines the value to use when clearing the field based on the initial value type */ getClearValue() { return MsftSme.isNullOrUndefined(this.min) ? 0 : this.min; } /** * Performs validation that is internal to this control * @param c The form control attached to this instance */ validate(c) { // shouldnt be possible by the user, but it could be a problem for // angular's min and max validator only work via code. So we implement them here. if (!MsftSme.isNullOrUndefined(this.min) && this.value < this.min) { const errors = Validators.min(this.min)(c); if (errors) { return errors; } } if (!MsftSme.isNullOrUndefined(this.max) && this.value > this.max) { const errors = Validators.max(this.max)(c); if (errors) { return errors; } } return super.validate(c); } }; /** @nocollapse */ SliderFormFieldComponent.ɵfac = function SliderFormFieldComponent_Factory(t) { return new (t || SliderFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector)); }; /** @nocollapse */ SliderFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SliderFormFieldComponent, selectors: [["sme-form-field", "type", "slider"]], inputs: { step: "step", min: "min", max: "max" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c0, decls: 4, vars: 12, consts: [[3, "formField"], [1, "sme-slider", "sme-form-field-editor"], ["type", "range", "role", "slider", "title", "value", 3, "disabled", "ngModel", "max", "min", "step", "ngModelChange"], [3, "alert"]], template: function SliderFormFieldComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "sme-form-field-layout", 0)(1, "div", 1)(2, "input", 2); i0.ɵɵlistener("ngModelChange", function SliderFormFieldComponent_Template_input_ngModelChange_2_listener($event) { return ctx.value = $event; }); i0.ɵɵelementEnd()(); i0.ɵɵelement(3, "sme-validation-alert", 3); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵproperty("formField", ctx); i0.ɵɵadvance(2); i0.ɵɵproperty("disabled", ctx.loadingOrDisabled)("ngModel", ctx.value)("max", ctx.max)("min", ctx.min)("step", ctx.step); i0.ɵɵattribute("aria-label", ctx.label)("aria-valuenow", ctx.value)("aria-valuetext", ctx.value)("aria-valuemax", ctx.max)("aria-valuemin", ctx.min); i0.ɵɵadvance(1); i0.ɵɵproperty("alert", ctx.alert); } }, dependencies: [i1.DefaultValueAccessor, i1.RangeValueAccessor, i1.NgControlStatus, i1.NgModel, i5.TooltipDirective, i6.ValidationAlertComponent, i7.FormFieldLayoutComponent], encapsulation: 2 }); SliderFormFieldComponent = __decorate([ SmeSchemaProperty({ type: SchemaPrimitiveType.Number, format: 'slider', description: 'A slider control binding to number data.', loaderComponent: SliderFormFieldLoaderComponent, optionProperties: [ { type: SchemaPrimitiveType.Number, format: 'textbox', name: 'min', label: 'actual_string:Min', required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.Number, format: 'textbox', name: 'max', label: 'actual_string:Max', defaultValue: 100, required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.Number, format: 'textbox', name: 'step', label: 'actual_string:Step', defaultValue: 1, required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.Number, format: 'textbox', name: 'tooMuch', label: 'actual_string:Too much', required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.Number, format: 'textbox', name: 'tooLittle', label: 'actual_string:Too little', required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.String, format: 'textbox', name: 'tooMuchWarning', label: 'actual_string:Too much warning', required: false, options: { multipleline: false } }, { type: SchemaPrimitiveType.String, format: 'textbox', name: 'tooLittleWarning', label: 'actual_string:Too little warning', required: false, options: { multipleline: false } } ] }), __metadata("design:paramtypes", [Injector]) ], SliderFormFieldComponent); export { SliderFormFieldComponent }; (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderFormFieldComponent, [{ type: Component, args: [{ selector: 'sme-form-field[type="slider"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div class=\"sme-slider sme-form-field-editor\">\r\n <input type=\"range\" role=\"slider\" [attr.aria-label]=\"label\" title=\"value\"\r\n [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" [attr.aria-valuenow]=\"value\" [attr.aria-valuetext]=\"value\" [max]=\"max\"\r\n [attr.aria-valuemax]=\"max\" [min]=\"min\" [attr.aria-valuemin]=\"min\" [step]=\"step\">\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }] }], function () { return [{ type: i0.Injector }]; }, { step: [{ type: Input }], min: [{ type: Input }], max: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZm9ybS9mb3JtLWZpZWxkL3NsaWRlci9zbGlkZXItZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL2Zvcm0tZmllbGQvc2xpZGVyL3NsaWRlci1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7O0FBRXhFLDRCQUE0QjtBQWlCNUIsMkJBQTJCO0FBQzNCLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx3Q0FBd0M7OzZVQUEvRSw4QkFBOEIsU0FBOUIsOEJBQThCO2dIQUE5Qiw4QkFBOEI7UUFmdkMsNENBVUs7UUFWZ0MsOEpBQWtCLDhIQUtqQyx3REFBZ0QsUUFBUSxJQUx2QixvTEFNWSxxRUFBNkQsUUFBUSxJQU5qRjtRQVd2RCxpQkFBaUI7O1FBWG9CLGtDQUFrQixpQ0FBQSxpREFBQSw2REFBQSx5Q0FBQSx1Q0FBQSx3RUFBQSxrSEFBQSx1Q0FBQSx5Q0FBQSxxSUFBQSw0RUFBQSxrSUFBQTttR0F5RzlDLHdC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RSxLQUFLO2lCQUN0QjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU07Z0JBQ2hDLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixLQUFLLEVBQUUsa0NBQWtDO2dCQUN6QyxRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUU7b0JBQ0wsWUFBWSxFQUFFLEtBQUs7aUJBQ3RCO2FBQ0o7U0FDSjtLQUNKLENBQUM7cUNBNENnQixRQUFRO0dBdkNiLHdCQUF3QixDQW1GcEM7U0FuRlksd0JBQXdCO3VGQUF4Qix3QkFBd0I7Y0FKcEMsU0FBUzsyQkFDSSwrQkFBK0I7MkRBd0JsQyxJQUFJO2tCQURWLEtBQUs7WUFPQyxHQUFHO2tCQURULEtBQUs7WUFPQyxHQUFHO2tCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTbWVTY2hlbWFQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL3NjaGVtYS9zY2hlbWEtZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgU2ltcGxlUHJvcGVydHlTY2hlbWFGaWVsZExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NjaGVtYS9zY2hlbWEtZmllbGQtaG9zdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTY2hlbWFQcmltaXRpdmVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2NoZW1hL3NjaGVtYS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTbWVJbnRlcm5hbEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNtZS1mb3JtLWZpZWxkICNmaWVsZCB0eXBlPVwic2xpZGVyXCIgWyhuZ01vZGVsKV09XCJkYXRhXCIgW25hbWVdPVwicHJvcGVydHlTY2hlbWEubmFtZVwiIFtsYWJlbF09XCJsb2NhbGl6ZShwcm9wZXJ0eVNjaGVtYS5sYWJlbClcIlxyXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJsb2NhbGl6ZShwcm9wZXJ0eVNjaGVtYS5kZXNjcmlwdGlvbilcIiBbcmVxdWlyZWRdPVwicHJvcGVydHlTY2hlbWEucmVxdWlyZWRcIiBbbWluXT1cInByb3BlcnR5U2NoZW1hLm9wdGlvbnMubWluXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiISFldmFsRXhwcmVzc2lvbihwcm9wZXJ0eVNjaGVtYS5yZWFkb25seUNvbmRpdGlvbilcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhIShwcm9wZXJ0eVNjaGVtYS5kaXNhYmxlZENvbmRpdGlvbiAmJiBldmFsRXhwcmVzc2lvbihwcm9wZXJ0eVNjaGVtYS5kaXNhYmxlZENvbmRpdGlvbikpXCJcclxuICAgICAgICBbbWF4XT1cInByb3BlcnR5U2NoZW1hLm9wdGlvbnMubWF4XCIgW3N0ZXBdPVwicHJvcGVydHlTY2hlbWEub3B0aW9ucy5zdGVwXCJcclxuICAgICAgICAoY3VzdG9tVmFsaWRhdGUpPVwicmVzb2x2ZUZ1bmN0aW9uKHByb3BlcnR5U2NoZW1hLmN1c3RvbVZhbGlkYXRpb24pKCRldmVudClcIlxyXG4gICAgICAgIChjdXN0b21Bc3luY1ZhbGlkYXRlKT1cInByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbiAmJiByZXNvbHZlRnVuY3Rpb24ocHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLmhhbmRsZXIpKCRldmVudClcIlxyXG4gICAgICAgIFtwZW5kaW5nTWVzc2FnZV09XCJwcm9wZXJ0eVNjaGVtYS5jdXN0b21Bc3luY1ZhbGlkYXRpb24gJiYgbG9jYWxpemUocHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLnBlbmRpbmdNZXNzYWdlKVwiXHJcbiAgICAgICAgW2N1c3RvbUFzeW5jVmFsaWRhdGVEaXNhYmxlZF09XCJzaG91bGRDdXN0b21Bc3luY1ZhbGlkYXRpb25CZURpc2FibGVkKClcIlxyXG4gICAgICAgIFtjdXN0b21Bc3luY1ZhbGlkYXRlRGVib3VuY2VUaW1lXT1cInByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbiAmJiArcHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLmhhbmRsZXJcIlxyXG4gICAgICAgID5cclxuICAgIDwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICBgXHJcbn0pXHJcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xyXG5leHBvcnQgY2xhc3MgU2xpZGVyRm9ybUZpZWxkTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgU2ltcGxlUHJvcGVydHlTY2hlbWFGaWVsZExvYWRlckNvbXBvbmVudCB7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBY2Nlc3NpYmxlIHJhbmdlIGZpZWxkIGltcGxlbWVudGF0aW9uIGFzIGEgc2xpZGVyXHJcbiAqL1xyXG5AU21lU2NoZW1hUHJvcGVydHkoe1xyXG4gICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5OdW1iZXIsXHJcbiAgICBmb3JtYXQ6ICdzbGlkZXInLFxyXG4gICAgZGVzY3JpcHRpb246ICdBIHNsaWRlciBjb250cm9sIGJpbmRpbmcgdG8gbnVtYmVyIGRhdGEuJyxcclxuICAgIGxvYWRlckNvbXBvbmVudDogU2xpZGVyRm9ybUZpZWxkTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgb3B0aW9uUHJvcGVydGllczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5OdW1iZXIsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICBuYW1lOiAnbWluJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdhY3R1YWxfc3RyaW5nOk1pbicsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuTnVtYmVyLFxyXG4gICAgICAgICAgICBmb3JtYXQ6ICd0ZXh0Ym94JyxcclxuICAgICAgICAgICAgbmFtZTogJ21heCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpNYXgnLFxyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IDEwMCxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZWxpbmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5OdW1iZXIsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICBuYW1lOiAnc3RlcCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpTdGVwJyxcclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAxLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlbGluZTogZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk51bWJlcixcclxuICAgICAgICAgICAgZm9ybWF0OiAndGV4dGJveCcsXHJcbiAgICAgICAgICAgIG5hbWU6ICd0b29NdWNoJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdhY3R1YWxfc3RyaW5nOlRvbyBtdWNoJyxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZWxpbmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5OdW1iZXIsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICBuYW1lOiAndG9vTGl0dGxlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdhY3R1YWxfc3RyaW5nOlRvbyBsaXR0bGUnLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlbGluZTogZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLlN0cmluZyxcclxuICAgICAgICAgICAgZm9ybWF0OiAndGV4dGJveCcsXHJcbiAgICAgICAgICAgIG5hbWU6ICd0b29NdWNoV2FybmluZycsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpUb28gbXVjaCB3YXJuaW5nJyxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZWxpbmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICBuYW1lOiAndG9vTGl0dGxlV2FybmluZycsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpUb28gbGl0dGxlIHdhcm5pbmcnLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlbGluZTogZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIF1cclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1mb3JtLWZpZWxkW3R5cGU9XCJzbGlkZXJcIl0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpZGVyRm9ybUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgU21lSW50ZXJuYWxGb3JtRmllbGRDb21wb25lbnQ8bnVtYmVyPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1NsaWRlckZvcm1GaWVsZENvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGltbWVkaWF0ZVZhbGlkYXRpb24uXHJcbiAgICAgKiBUaGlzIGlzIG1lYW50IHRvIGJlIG92ZXJyaWRkZW4gYnkgZGVyaXZlZCBjbGFzc2VzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgZGVmYXVsdEltbWVkaWF0ZVZhbGlkYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2l6ZSBvZiBlYWNoIG1vdmVtZW50IG9mIHRoZSBzbGlkZXIuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3RlcDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHNsaWRlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1pbjogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHNsaWRlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1heDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFNsaWRlckZvcm1GaWVsZENvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xyXG4gICAgICAgIHRoaXMubWluID0gMDtcclxuICAgICAgICB0aGlzLm1heCA9IDEwMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSB2YWx1ZSB0byB1c2Ugd2hlbiBjbGVhcmluZyB0aGUgZmllbGQgYmFzZWQgb24gdGhlIGluaXRpYWwgdmFsdWUgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q2xlYXJWYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMubWluKSA/IDAgOiB0aGlzLm1pbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIHZhbGlkYXRpb24gdGhhdCBpcyBpbnRlcm5hbCB0byB0aGlzIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIFRoZSBmb3JtIGNvbnRyb2wgYXR0YWNoZWQgdG8gdGhpcyBpbnN0YW5jZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAvLyBzaG91bGRudCBiZSBwb3NzaWJsZSBieSB0aGUgdXNlciwgYnV0IGl0IGNvdWxkIGJlIGEgcHJvYmxlbSBmb3JcclxuICAgICAgICAvLyBhbmd1bGFyJ3MgbWluIGFuZCBtYXggdmFsaWRhdG9yIG9ubHkgd29yayB2aWEgY29kZS4gU28gd2UgaW1wbGVtZW50IHRoZW0gaGVyZS5cclxuICAgICAgICBpZiAoIU1zZnRTbWUuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5taW4pICYmIHRoaXMudmFsdWUgPCB0aGlzLm1pbikge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSBWYWxpZGF0b3JzLm1pbih0aGlzLm1pbikoYyk7XHJcbiAgICAgICAgICAgIGlmIChlcnJvcnMpIHsgcmV0dXJuIGVycm9yczsgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMubWF4KSAmJiB0aGlzLnZhbHVlID4gdGhpcy5tYXgpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gVmFsaWRhdG9ycy5tYXgodGhpcy5tYXgpKGMpO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7IHJldHVybiBlcnJvcnM7IH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdXBlci52YWxpZGF0ZShjKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWZvcm0tZmllbGQtbGF5b3V0IFtmb3JtRmllbGRdPVwidGhpc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJzbWUtc2xpZGVyIHNtZS1mb3JtLWZpZWxkLWVkaXRvclwiPlxyXG4gICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIHJvbGU9XCJzbGlkZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCIgIHRpdGxlPVwidmFsdWVcIlxyXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nT3JEaXNhYmxlZFwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCIgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwidmFsdWVcIiBbbWF4XT1cIm1heFwiXHJcbiAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIiBbbWluXT1cIm1pblwiIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCIgW3N0ZXBdPVwic3RlcFwiPlxyXG4gIDwvZGl2PlxyXG4gIDxzbWUtdmFsaWRhdGlvbi1hbGVydCBbYWxlcnRdPVwiYWxlcnRcIj48L3NtZS12YWxpZGF0aW9uLWFsZXJ0PlxyXG48L3NtZS1mb3JtLWZpZWxkLWxheW91dD5cclxuIl19