{"version":3,"sources":["webpack:///D:/a/1/s/node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js"],"names":["NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","provide","useExisting","CheckboxControlValueAccessor","multi","_renderer","_elementRef","this","onChange","_","onTouched","value","setProperty","nativeElement","fn","isDisabled","ɵfac","t","ɵdir","type","selectors","hostBindings","rf","ctx","$event","target","checked","features","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","userAgent","getUserAgent","test","toLowerCase","_handleInput","_compositionStart","_compositionEnd","AbstractControlDirective","control","valid","invalid","pending","disabled","enabled","errors","pristine","dirty","touched","status","untouched","statusChanges","valueChanges","reset","errorCode","path","hasError","getError","ControlContainer","ɵControlContainer_BaseFactory","unimplemented","Error","NgControl","super","arguments","_parent","name","valueAccessor","_rawValidators","_rawAsyncValidators","AbstractControlStatus","cd","_cd","NgControlStatus","hostVars","ngClassUntouched","ngClassTouched","ngClassPristine","ngClassDirty","ngClassValid","ngClassInvalid","ngClassPending","NgControlStatusGroup","isEmptyInputValue","length","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","min","parseFloat","isNaN","max","minLength","maxLength","pattern","nullValidator","regex","regexStr","charAt","RegExp","toString","validators","presentValidators","filter","isPresent","_mergeErrors","map","v","observables","toObservable","pipe","o","r","obs","arrayOfErrors","res","forEach","Object","assign","keys","normalizeValidator","validator","validate","c","normalizeAsyncValidator","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistry","_accessors","accessor","push","i","splice","_isSameGroup","fireUncheck","controlPair","_control","ɵprov","token","factory","_registry","_injector","get","_checkName","add","remove","_state","_fn","select","writeValue","formControlName","_throwNameError","inputs","RANGE_VALUE_ACCESSOR","RangeValueAccessor","FormErrorExamples","ReactiveErrors","console","warn","directiveName","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString","id","slice","_optionMap","Map","_idCounter","_compareWith","JSON","stringify","_getOptionId","valueString","_getOptionValue","Array","from","split","has","compareWith","NgSelectOption","_element","_select","_registerOption","set","_setElementValue","delete","ngValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString$1","optionSelectedStateSetter","isArray","ids","opt","_setSelected","indexOf","selected","hasOwnProperty","options","selectedOptions","item","val","_value","ɵNgSelectMultipleOption","controlPath","parent","setUpControl","dir","_throwError","compose","asyncValidator","composeAsync","registerOnChange","newValue","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","emitModelEvent","viewToModelUpdate","registerOnTouched","_pendingTouched","markAsTouched","setDisabledState","registerOnDisabledChange","registerOnValidatorChange","updateValueAndValidity","markAsDirty","setValue","emitModelToViewChange","setUpFormContainer","_noControlError","message","messageEnd","join","composeValidators","composeAsyncValidators","isPropertyUpdated","changes","viewModel","change","isFirstChange","currentValue","BUILTIN_ACCESSORS","syncPendingControls","form","directives","_syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","undefined","builtinAccessor","customAccessor","constructor","some","a","removeDir","list","el","index","coerceToValidator","validatorOrOpts","isOptionsObj","coerceToAsyncValidator","origAsyncValidator","asyncValidators","AbstractControl","_onCollectionChange","_onDisabledChange","_updateOn","newValidator","opts","onlySelf","_forEachChild","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","emitEvent","emit","markAsPending","skipPristineCheck","_parentMarkedDirty","disable","_updateValue","_updateAncestors","changeFn","enable","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","ctrl","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","subscribe","setErrors","unsubscribe","_updateControlsErrors","delimiter","controlToFind","FormGroup","controls","FormArray","at","x","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","FormControl","_onChange","_applyFormState","_setUpdateStrategy","_initObservables","emitViewToModelChange","condition","cb","_isBoxedValue","_setUpControls","setParent","_registerOnCollectionChange","registerControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","patchValue","_reduceChildren","acc","getRawValue","subtreeUpdated","updated","child","k","_reduceValue","contains","initValue","_registerControl","reduce","formDirectiveProvider","NgForm","resolvedPromise","Promise","resolve","submitted","_directives","ngSubmit","then","container","_findContainer","removeControl","group","resetForm","pop","onSubmit","onReset","outputs","exportAs","AbstractFormGroupDirective","_checkParentType","addFormGroup","formDirective","removeFormGroup","getFormGroup","_validators","_asyncValidators","ɵAbstractFormGroupDirective_BaseFactory","TemplateDrivenErrors","modelGroupProvider","NgModelGroup","modelGroupParentException","formControlBinding","NgModel","resolvedPromise$1","_registered","update","_checkForErrors","_setUpControl","_updateDisabled","model","_isStandalone","_setUpStandalone","addControl","standalone","formGroupNameException","modelParentException","missingNameException","disabledValue","ɵNgNoValidate","hostAttrs","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider$1","FormGroupDirective","_checkFormPresent","_updateValidators","_updateDomValue","_updateRegistrations","newCtrl","_clearChangeFns","_oldForm","sync","async","missingFormException","formGroupNameProvider","FormGroupName","_hasInvalidParent","groupParentException","formArrayNameProvider","FormArrayName","addFormArray","removeFormArray","getFormArray","arrayParentException","controlNameBinding","FormControlName","_ngModelWarningConfig","_added","_ngModelWarningSent","disabledAttrWarning","warningConfig","_ngModelWarningSentOnce","ngModelWarning","updateModel","ngModelGroupException","controlParentException","REQUIRED_VALIDATOR","RequiredValidator","_required","required","MIN_LENGTH_VALIDATOR","MinLengthValidator","_createValidator","minlength","_validator","parseInt","MAX_LENGTH_VALIDATOR","MaxLengthValidator","maxlength","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","ɵmod","ɵinj","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","FormsModule","providers","imports","ReactiveFormsModule","ngModule","useValue","warnOnNgModelWithFormControl"],"mappings":"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","file":"x","sourcesContent":["/**\n * @license Angular v9.1.4\n * (c) 2010-2020 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { InjectionToken, forwardRef, Directive, Renderer2, ElementRef, Optional, Inject, Self, ɵisPromise, ɵisObservable, Injectable, Injector, Input, ɵlooseIdentical, Host, isDevMode, EventEmitter, SkipSelf, Output, NgModule, Version } from '@angular/core';\nimport { ɵgetDOM } from '@angular/common';\nimport { forkJoin, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/control_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@description\n * Defines an interface that acts as a bridge between the Angular forms API and a\n * native element in the DOM.\n *\n * Implement this interface to create a custom form control directive\n * that integrates with Angular forms.\n *\n * @see DefaultValueAccessor\n *\n * \\@publicApi\n * @record\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction ControlValueAccessor() { }\nif (false) {\n /**\n * \\@description\n * Writes a new value to the element.\n *\n * This method is called by the forms API to write to the view when programmatic\n * changes from model to view are requested.\n *\n * \\@usageNotes\n * ### Write a value to the element\n *\n * The following example writes a value to the native DOM element.\n *\n * ```ts\n * writeValue(value: any): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\n * }\n * ```\n *\n * @param {?} obj The new value for the element\n * @return {?}\n */\n ControlValueAccessor.prototype.writeValue = function (obj) { };\n /**\n * \\@description\n * Registers a callback function that is called when the control's value\n * changes in the UI.\n *\n * This method is called by the forms API on initialization to update the form\n * model when values propagate from the view to the model.\n *\n * When implementing the `registerOnChange` method in your own value accessor,\n * save the given function so your class calls it at the appropriate time.\n *\n * \\@usageNotes\n * ### Store the change function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnChange(fn: (_: any) => void): void {\n * this._onChange = fn;\n * }\n * ```\n *\n * When the value changes in the UI, call the registered\n * function to allow the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(change)': '_onChange($event.target.value)'\n * }\n * ```\n *\n * @param {?} fn The callback function to register\n * @return {?}\n */\n ControlValueAccessor.prototype.registerOnChange = function (fn) { };\n /**\n * \\@description\n * Registers a callback function is called by the forms API on initialization\n * to update the form model on blur.\n *\n * When implementing `registerOnTouched` in your own value accessor, save the given\n * function so your class calls it when the control should be considered\n * blurred or \"touched\".\n *\n * \\@usageNotes\n * ### Store the callback function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnTouched(fn: any): void {\n * this._onTouched = fn;\n * }\n * ```\n *\n * On blur (or equivalent), your class should call the registered function to allow\n * the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(blur)': '_onTouched()'\n * }\n * ```\n *\n * @param {?} fn The callback function to register\n * @return {?}\n */\n ControlValueAccessor.prototype.registerOnTouched = function (fn) { };\n /**\n * \\@description\n * Function that is called by the forms API when the control status changes to\n * or from 'DISABLED'. Depending on the status, it enables or disables the\n * appropriate DOM element.\n *\n * \\@usageNotes\n * The following is an example of writing the disabled property to a native DOM element:\n *\n * ```ts\n * setDisabledState(isDisabled: boolean): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n * }\n * ```\n *\n * @param {?} isDisabled The disabled status to set on the element\n * @return {?}\n */\n ControlValueAccessor.prototype.setDisabledState = function (isDisabled) { };\n}\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * \\@publicApi\n * @type {?}\n */\nconst NG_VALUE_ACCESSOR = new InjectionToken('NgValueAccessor');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/checkbox_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => CheckboxControlValueAccessor)),\n multi: true,\n};\n/**\n * \\@description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * \\@usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass CheckboxControlValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n */\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * Sets the \"checked\" property on the input element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'checked', value);\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\nCheckboxControlValueAccessor.ɵfac = function CheckboxControlValueAccessor_Factory(t) { return new (t || CheckboxControlValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCheckboxControlValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CheckboxControlValueAccessor, selectors: [[\"input\", \"type\", \"checkbox\", \"formControlName\", \"\"], [\"input\", \"type\", \"checkbox\", \"formControl\", \"\"], [\"input\", \"type\", \"checkbox\", \"ngModel\", \"\"]], hostBindings: function CheckboxControlValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function CheckboxControlValueAccessor_change_HostBindingHandler($event) { return ctx.onChange($event.target.checked); })(\"blur\", function CheckboxControlValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CHECKBOX_VALUE_ACCESSOR])] });\n/** @nocollapse */\nCheckboxControlValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CheckboxControlValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\n providers: [CHECKBOX_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, null); })();\nif (false) {\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n * @type {?}\n */\n CheckboxControlValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n CheckboxControlValueAccessor.prototype.onTouched;\n /**\n * @type {?}\n * @private\n */\n CheckboxControlValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n CheckboxControlValueAccessor.prototype._elementRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/default_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => DefaultValueAccessor)),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n * @return {?}\n */\nfunction _isAndroid() {\n /** @type {?} */\n const userAgent = ɵgetDOM() ? ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * \\@description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * \\@publicApi\n * @type {?}\n */\nconst COMPOSITION_BUFFER_MODE = new InjectionToken('CompositionEventMode');\n/**\n * \\@description\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * \\@usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass DefaultValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _compositionMode\n */\n constructor(_renderer, _elementRef, _compositionMode) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._compositionMode = _compositionMode;\n /**\n * \\@description\n * The registered callback function called when an input event occurs on the input element.\n */\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n /**\n * Whether the user is creating a composition string (IME events).\n */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n /**\n * Sets the \"value\" property on the input element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n /** @type {?} */\n const normalizedValue = value == null ? '' : value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', normalizedValue);\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * \\@internal\n * @param {?} value\n * @return {?}\n */\n _handleInput(value) {\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n this.onChange(value);\n }\n }\n /**\n * \\@internal\n * @return {?}\n */\n _compositionStart() {\n this._composing = true;\n }\n /**\n * \\@internal\n * @param {?} value\n * @return {?}\n */\n _compositionEnd(value) {\n this._composing = false;\n this._compositionMode && this.onChange(value);\n }\n}\nDefaultValueAccessor.ɵfac = function DefaultValueAccessor_Factory(t) { return new (t || DefaultValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(COMPOSITION_BUFFER_MODE, 8)); };\nDefaultValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: DefaultValueAccessor, selectors: [[\"input\", \"formControlName\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"formControlName\", \"\"], [\"input\", \"formControl\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"formControl\", \"\"], [\"input\", \"ngModel\", \"\", 3, \"type\", \"checkbox\"], [\"textarea\", \"ngModel\", \"\"], [\"\", \"ngDefaultControl\", \"\"]], hostBindings: function DefaultValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function DefaultValueAccessor_input_HostBindingHandler($event) { return ctx._handleInput($event.target.value); })(\"blur\", function DefaultValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); })(\"compositionstart\", function DefaultValueAccessor_compositionstart_HostBindingHandler() { return ctx._compositionStart(); })(\"compositionend\", function DefaultValueAccessor_compositionend_HostBindingHandler($event) { return ctx._compositionEnd($event.target.value); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([DEFAULT_VALUE_ACCESSOR])] });\n/** @nocollapse */\nDefaultValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [COMPOSITION_BUFFER_MODE,] }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(DefaultValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',\n // TODO: vsavkin replace the above selector with the one below it once\n // https://github.com/angular/angular/issues/3011 is implemented\n // selector: '[ngModel],[formControl],[formControlName]',\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)'\n },\n providers: [DEFAULT_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: Boolean, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [COMPOSITION_BUFFER_MODE]\n }] }]; }, null); })();\nif (false) {\n /**\n * \\@description\n * The registered callback function called when an input event occurs on the input element.\n * @type {?}\n */\n DefaultValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n DefaultValueAccessor.prototype.onTouched;\n /**\n * Whether the user is creating a composition string (IME events).\n * @type {?}\n * @private\n */\n DefaultValueAccessor.prototype._composing;\n /**\n * @type {?}\n * @private\n */\n DefaultValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n DefaultValueAccessor.prototype._elementRef;\n /**\n * @type {?}\n * @private\n */\n DefaultValueAccessor.prototype._compositionMode;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/abstract_control_directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@description\n * Base class for control directives.\n *\n * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.\n *\n * \\@publicApi\n * @abstract\n */\nclass AbstractControlDirective {\n /**\n * \\@description\n * Reports the value of the control if it is present, otherwise null.\n * @return {?}\n */\n get value() {\n return this.control ? this.control.value : null;\n }\n /**\n * \\@description\n * Reports whether the control is valid. A control is considered valid if no\n * validation errors exist with the current value.\n * If the control is not present, null is returned.\n * @return {?}\n */\n get valid() {\n return this.control ? this.control.valid : null;\n }\n /**\n * \\@description\n * Reports whether the control is invalid, meaning that an error exists in the input value.\n * If the control is not present, null is returned.\n * @return {?}\n */\n get invalid() {\n return this.control ? this.control.invalid : null;\n }\n /**\n * \\@description\n * Reports whether a control is pending, meaning that that async validation is occurring and\n * errors are not yet available for the input value. If the control is not present, null is\n * returned.\n * @return {?}\n */\n get pending() {\n return this.control ? this.control.pending : null;\n }\n /**\n * \\@description\n * Reports whether the control is disabled, meaning that the control is disabled\n * in the UI and is exempt from validation checks and excluded from aggregate\n * values of ancestor controls. If the control is not present, null is returned.\n * @return {?}\n */\n get disabled() {\n return this.control ? this.control.disabled : null;\n }\n /**\n * \\@description\n * Reports whether the control is enabled, meaning that the control is included in ancestor\n * calculations of validity or value. If the control is not present, null is returned.\n * @return {?}\n */\n get enabled() {\n return this.control ? this.control.enabled : null;\n }\n /**\n * \\@description\n * Reports the control's validation errors. If the control is not present, null is returned.\n * @return {?}\n */\n get errors() {\n return this.control ? this.control.errors : null;\n }\n /**\n * \\@description\n * Reports whether the control is pristine, meaning that the user has not yet changed\n * the value in the UI. If the control is not present, null is returned.\n * @return {?}\n */\n get pristine() {\n return this.control ? this.control.pristine : null;\n }\n /**\n * \\@description\n * Reports whether the control is dirty, meaning that the user has changed\n * the value in the UI. If the control is not present, null is returned.\n * @return {?}\n */\n get dirty() {\n return this.control ? this.control.dirty : null;\n }\n /**\n * \\@description\n * Reports whether the control is touched, meaning that the user has triggered\n * a `blur` event on it. If the control is not present, null is returned.\n * @return {?}\n */\n get touched() {\n return this.control ? this.control.touched : null;\n }\n /**\n * \\@description\n * Reports the validation status of the control. Possible values include:\n * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.\n * If the control is not present, null is returned.\n * @return {?}\n */\n get status() {\n return this.control ? this.control.status : null;\n }\n /**\n * \\@description\n * Reports whether the control is untouched, meaning that the user has not yet triggered\n * a `blur` event on it. If the control is not present, null is returned.\n * @return {?}\n */\n get untouched() {\n return this.control ? this.control.untouched : null;\n }\n /**\n * \\@description\n * Returns a multicasting observable that emits a validation status whenever it is\n * calculated for the control. If the control is not present, null is returned.\n * @return {?}\n */\n get statusChanges() {\n return this.control ? this.control.statusChanges : null;\n }\n /**\n * \\@description\n * Returns a multicasting observable of value changes for the control that emits every time the\n * value of the control changes in the UI or programmatically.\n * If the control is not present, null is returned.\n * @return {?}\n */\n get valueChanges() {\n return this.control ? this.control.valueChanges : null;\n }\n /**\n * \\@description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n * @return {?}\n */\n get path() {\n return null;\n }\n /**\n * \\@description\n * Resets the control with the provided value if the control is present.\n * @param {?=} value\n * @return {?}\n */\n reset(value = undefined) {\n if (this.control)\n this.control.reset(value);\n }\n /**\n * \\@description\n * Reports whether the control with the given path has the error specified.\n *\n * \\@usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @param {?} errorCode The code of the error to check\n * @param {?=} path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @return {?} whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return this.control ? this.control.hasError(errorCode, path) : false;\n }\n /**\n * \\@description\n * Reports error data for the control with the given path.\n *\n * \\@usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @param {?} errorCode The code of the error to check\n * @param {?=} path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @return {?} error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n return this.control ? this.control.getError(errorCode, path) : null;\n }\n}\nAbstractControlDirective.ɵfac = function AbstractControlDirective_Factory(t) { return new (t || AbstractControlDirective)(); };\nAbstractControlDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: AbstractControlDirective });\n\nif (false) {\n /**\n * \\@description\n * A reference to the underlying control.\n *\n * @abstract\n * @return {?} the control that backs this directive. Most properties fall through to that instance.\n */\n AbstractControlDirective.prototype.control = function () { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/control_container.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@description\n * A base class for directives that contain multiple registered instances of `NgControl`.\n * Only used by the forms module.\n *\n * \\@publicApi\n * @abstract\n */\nclass ControlContainer extends AbstractControlDirective {\n /**\n * \\@description\n * The top-level form directive for the control.\n * @return {?}\n */\n get formDirective() {\n return null;\n }\n /**\n * \\@description\n * The path to this group.\n * @return {?}\n */\n get path() {\n return null;\n }\n}\nControlContainer.ɵfac = function ControlContainer_Factory(t) { return ɵControlContainer_BaseFactory(t || ControlContainer); };\nControlContainer.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: ControlContainer, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵControlContainer_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ControlContainer);\nif (false) {\n /**\n * \\@description\n * The name for the control\n * @type {?}\n */\n ControlContainer.prototype.name;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/ng_control.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction unimplemented() {\n throw new Error('unimplemented');\n}\n/**\n * \\@description\n * A base class that all control `FormControl`-based directives extend. It binds a `FormControl`\n * object to a DOM element.\n *\n * \\@publicApi\n * @abstract\n */\nclass NgControl extends AbstractControlDirective {\n constructor() {\n super(...arguments);\n /**\n * \\@description\n * The parent form for the control.\n *\n * \\@internal\n */\n this._parent = null;\n /**\n * \\@description\n * The name for the control\n */\n this.name = null;\n /**\n * \\@description\n * The value accessor for the control\n */\n this.valueAccessor = null;\n /**\n * \\@description\n * The uncomposed array of synchronous validators for the control\n *\n * \\@internal\n */\n this._rawValidators = [];\n /**\n * \\@description\n * The uncomposed array of async validators for the control\n *\n * \\@internal\n */\n this._rawAsyncValidators = [];\n }\n /**\n * \\@description\n * The registered synchronous validator function for the control\n *\n * @throws An exception that this method is not implemented\n * @return {?}\n */\n get validator() {\n return (/** @type {?} */ (unimplemented()));\n }\n /**\n * \\@description\n * The registered async validator function for the control\n *\n * @throws An exception that this method is not implemented\n * @return {?}\n */\n get asyncValidator() {\n return (/** @type {?} */ (unimplemented()));\n }\n}\nif (false) {\n /**\n * \\@description\n * The parent form for the control.\n *\n * \\@internal\n * @type {?}\n */\n NgControl.prototype._parent;\n /**\n * \\@description\n * The name for the control\n * @type {?}\n */\n NgControl.prototype.name;\n /**\n * \\@description\n * The value accessor for the control\n * @type {?}\n */\n NgControl.prototype.valueAccessor;\n /**\n * \\@description\n * The uncomposed array of synchronous validators for the control\n *\n * \\@internal\n * @type {?}\n */\n NgControl.prototype._rawValidators;\n /**\n * \\@description\n * The uncomposed array of async validators for the control\n *\n * \\@internal\n * @type {?}\n */\n NgControl.prototype._rawAsyncValidators;\n /**\n * \\@description\n * The callback method to update the model from the view when requested\n *\n * @abstract\n * @param {?} newValue The new value for the view\n * @return {?}\n */\n NgControl.prototype.viewToModelUpdate = function (newValue) { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/ng_control_status.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AbstractControlStatus {\n /**\n * @param {?} cd\n */\n constructor(cd) {\n this._cd = cd;\n }\n /**\n * @return {?}\n */\n get ngClassUntouched() {\n return this._cd.control ? this._cd.control.untouched : false;\n }\n /**\n * @return {?}\n */\n get ngClassTouched() {\n return this._cd.control ? this._cd.control.touched : false;\n }\n /**\n * @return {?}\n */\n get ngClassPristine() {\n return this._cd.control ? this._cd.control.pristine : false;\n }\n /**\n * @return {?}\n */\n get ngClassDirty() {\n return this._cd.control ? this._cd.control.dirty : false;\n }\n /**\n * @return {?}\n */\n get ngClassValid() {\n return this._cd.control ? this._cd.control.valid : false;\n }\n /**\n * @return {?}\n */\n get ngClassInvalid() {\n return this._cd.control ? this._cd.control.invalid : false;\n }\n /**\n * @return {?}\n */\n get ngClassPending() {\n return this._cd.control ? this._cd.control.pending : false;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AbstractControlStatus.prototype._cd;\n}\n/** @type {?} */\nconst ngControlStatusHost = {\n '[class.ng-untouched]': 'ngClassUntouched',\n '[class.ng-touched]': 'ngClassTouched',\n '[class.ng-pristine]': 'ngClassPristine',\n '[class.ng-dirty]': 'ngClassDirty',\n '[class.ng-valid]': 'ngClassValid',\n '[class.ng-invalid]': 'ngClassInvalid',\n '[class.ng-pending]': 'ngClassPending',\n};\n/**\n * \\@description\n * Directive automatically applied to Angular form controls that sets CSS classes\n * based on control status.\n *\n * \\@usageNotes\n *\n * ### CSS classes applied\n *\n * The following classes are applied as the properties become true:\n *\n * * ng-valid\n * * ng-invalid\n * * ng-pending\n * * ng-pristine\n * * ng-dirty\n * * ng-untouched\n * * ng-touched\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass NgControlStatus extends AbstractControlStatus {\n /**\n * @param {?} cd\n */\n constructor(cd) {\n super(cd);\n }\n}\nNgControlStatus.ɵfac = function NgControlStatus_Factory(t) { return new (t || NgControlStatus)(ɵngcc0.ɵɵdirectiveInject(NgControl, 2)); };\nNgControlStatus.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgControlStatus, selectors: [[\"\", \"formControlName\", \"\"], [\"\", \"ngModel\", \"\"], [\"\", \"formControl\", \"\"]], hostVars: 14, hostBindings: function NgControlStatus_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-untouched\", ctx.ngClassUntouched)(\"ng-touched\", ctx.ngClassTouched)(\"ng-pristine\", ctx.ngClassPristine)(\"ng-dirty\", ctx.ngClassDirty)(\"ng-valid\", ctx.ngClassValid)(\"ng-invalid\", ctx.ngClassInvalid)(\"ng-pending\", ctx.ngClassPending);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nNgControlStatus.ctorParameters = () => [\n { type: NgControl, decorators: [{ type: Self }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgControlStatus, [{\n type: Directive,\n args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]\n }], function () { return [{ type: NgControl, decorators: [{\n type: Self\n }] }]; }, null); })();\n/**\n * \\@description\n * Directive automatically applied to Angular form groups that sets CSS classes\n * based on control status (valid/invalid/dirty/etc).\n *\n * @see `NgControlStatus`\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass NgControlStatusGroup extends AbstractControlStatus {\n /**\n * @param {?} cd\n */\n constructor(cd) {\n super(cd);\n }\n}\nNgControlStatusGroup.ɵfac = function NgControlStatusGroup_Factory(t) { return new (t || NgControlStatusGroup)(ɵngcc0.ɵɵdirectiveInject(ControlContainer, 2)); };\nNgControlStatusGroup.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgControlStatusGroup, selectors: [[\"\", \"formGroupName\", \"\"], [\"\", \"formArrayName\", \"\"], [\"\", \"ngModelGroup\", \"\"], [\"\", \"formGroup\", \"\"], [\"form\", 3, \"ngNoForm\", \"\"], [\"\", \"ngForm\", \"\"]], hostVars: 14, hostBindings: function NgControlStatusGroup_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-untouched\", ctx.ngClassUntouched)(\"ng-touched\", ctx.ngClassTouched)(\"ng-pristine\", ctx.ngClassPristine)(\"ng-dirty\", ctx.ngClassDirty)(\"ng-valid\", ctx.ngClassValid)(\"ng-invalid\", ctx.ngClassInvalid)(\"ng-pending\", ctx.ngClassPending);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nNgControlStatusGroup.ctorParameters = () => [\n { type: ControlContainer, decorators: [{ type: Self }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgControlStatusGroup, [{\n type: Directive,\n args: [{\n selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',\n host: ngControlStatusHost\n }]\n }], function () { return [{ type: ControlContainer, decorators: [{\n type: Self\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/validators.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isEmptyInputValue(value) {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0;\n}\n/**\n * \\@description\n * An `InjectionToken` for registering additional synchronous validators used with\n * `AbstractControl`s.\n *\n * @see `NG_ASYNC_VALIDATORS`\n *\n * \\@usageNotes\n *\n * ### Providing a custom validator\n *\n * The following example registers a custom validator directive. Adding the validator to the\n * existing collection of validators requires the `multi: true` option.\n *\n * ```typescript\n * \\@Directive({\n * selector: '[customValidator]',\n * providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]\n * })\n * class CustomValidatorDirective implements Validator {\n * validate(control: AbstractControl): ValidationErrors | null {\n * return { 'custom': true };\n * }\n * }\n * ```\n *\n * \\@publicApi\n * @type {?}\n */\nconst NG_VALIDATORS = new InjectionToken('NgValidators');\n/**\n * \\@description\n * An `InjectionToken` for registering additional asynchronous validators used with\n * `AbstractControl`s.\n *\n * @see `NG_VALIDATORS`\n *\n * \\@publicApi\n * @type {?}\n */\nconst NG_ASYNC_VALIDATORS = new InjectionToken('NgAsyncValidators');\n/**\n * A regular expression that matches valid e-mail addresses.\n *\n * At a high level, this regexp matches e-mail addresses of the format `local-part\\@tld`, where:\n * - `local-part` consists of one or more of the allowed characters (alphanumeric and some\n * punctuation symbols).\n * - `local-part` cannot begin or end with a period (`.`).\n * - `local-part` cannot be longer than 64 characters.\n * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or\n * `foo.com`.\n * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and\n * periods (`.`)).\n * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).\n * - A `label` cannot be longer than 63 characters.\n * - The whole address cannot be longer than 254 characters.\n *\n * ## Implementation background\n *\n * This regexp was ported over from AngularJS (see there for git history):\n * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27\n * It is based on the\n * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address). The main differences from the WHATWG version are:\n * - Disallow `local-part` to begin or end with a period (`.`).\n * - Disallow `local-part` length to exceed 64 characters.\n * - Disallow total address length to exceed 254 characters.\n *\n * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.\n * @type {?}\n */\nconst EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n * \\@description\n * Provides a set of built-in validators that can be used by form controls.\n *\n * A validator is a function that processes a `FormControl` or collection of\n * controls and returns an error map or null. A null map means that validation has passed.\n *\n * @see [Form Validation](/guide/form-validation)\n *\n * \\@publicApi\n */\nclass Validators {\n /**\n * \\@description\n * Validator that requires the control's value to be greater than or equal to the provided number.\n * The validator exists only as a function and not as a directive.\n *\n * \\@usageNotes\n *\n * ### Validate against a minimum of 3\n *\n * ```typescript\n * const control = new FormControl(2, Validators.min(3));\n *\n * console.log(control.errors); // {min: {min: 3, actual: 2}}\n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} min\n * @return {?} A validator function that returns an error map with the\n * `min` property if the validation check fails, otherwise `null`.\n *\n */\n static min(min) {\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {\n return null; // don't validate empty values to allow optional controls\n }\n /** @type {?} */\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min\n return !isNaN(value) && value < min ? { 'min': { 'min': min, 'actual': control.value } } : null;\n });\n }\n /**\n * \\@description\n * Validator that requires the control's value to be less than or equal to the provided number.\n * The validator exists only as a function and not as a directive.\n *\n * \\@usageNotes\n *\n * ### Validate against a maximum of 15\n *\n * ```typescript\n * const control = new FormControl(16, Validators.max(15));\n *\n * console.log(control.errors); // {max: {max: 15, actual: 16}}\n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} max\n * @return {?} A validator function that returns an error map with the\n * `max` property if the validation check fails, otherwise `null`.\n *\n */\n static max(max) {\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {\n return null; // don't validate empty values to allow optional controls\n }\n /** @type {?} */\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max\n return !isNaN(value) && value > max ? { 'max': { 'max': max, 'actual': control.value } } : null;\n });\n }\n /**\n * \\@description\n * Validator that requires the control have a non-empty value.\n *\n * \\@usageNotes\n *\n * ### Validate that the field is non-empty\n *\n * ```typescript\n * const control = new FormControl('', Validators.required);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} control\n * @return {?} An error map with the `required` property\n * if the validation check fails, otherwise `null`.\n *\n */\n static required(control) {\n return isEmptyInputValue(control.value) ? { 'required': true } : null;\n }\n /**\n * \\@description\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n *\n * \\@usageNotes\n *\n * ### Validate that the field value is true\n *\n * ```typescript\n * const control = new FormControl('', Validators.requiredTrue);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} control\n * @return {?} An error map that contains the `required` property\n * set to `true` if the validation check fails, otherwise `null`.\n *\n */\n static requiredTrue(control) {\n return control.value === true ? null : { 'required': true };\n }\n /**\n * \\@description\n * Validator that requires the control's value pass an email validation test.\n *\n * Tests the value using a [regular\n * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)\n * pattern suitable for common usecases. The pattern is based on the definition of a valid email\n * address in the [WHATWG HTML\n * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address).\n *\n * The differences from the WHATWG version include:\n * - Disallow `local-part` (the part before the `\\@` symbol) to begin or end with a period (`.`).\n * - Disallow `local-part` to be longer than 64 characters.\n * - Disallow the whole address to be longer than 254 characters.\n *\n * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to\n * validate the value against a different pattern.\n *\n * \\@usageNotes\n *\n * ### Validate that the field matches a valid email pattern\n *\n * ```typescript\n * const control = new FormControl('bad\\@', Validators.email);\n *\n * console.log(control.errors); // {email: true}\n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} control\n * @return {?} An error map with the `email` property\n * if the validation check fails, otherwise `null`.\n *\n */\n static email(control) {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n return EMAIL_REGEXP.test(control.value) ? null : { 'email': true };\n }\n /**\n * \\@description\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. This validator is also provided by default if you use the\n * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays. The\n * `minLength` validator logic is also not invoked for values when their `length` property is 0\n * (for example in case of an empty string or an empty array), to support optional controls. You\n * can use the standard `required` validator if empty values should not be considered valid.\n *\n * \\@usageNotes\n *\n * ### Validate that the field has a minimum of 3 characters\n *\n * ```typescript\n * const control = new FormControl('ng', Validators.minLength(3));\n *\n * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}\n * ```\n *\n * ```html\n * \n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} minLength\n * @return {?} A validator function that returns an error map with the\n * `minlength` if the validation check fails, otherwise `null`.\n *\n */\n static minLength(minLength) {\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n /** @type {?} */\n const length = control.value ? control.value.length : 0;\n return length < minLength ?\n { 'minlength': { 'requiredLength': minLength, 'actualLength': length } } :\n null;\n });\n }\n /**\n * \\@description\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. This validator is also provided by default if you use the\n * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays.\n *\n * \\@usageNotes\n *\n * ### Validate that the field has maximum of 5 characters\n *\n * ```typescript\n * const control = new FormControl('Angular', Validators.maxLength(5));\n *\n * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}\n * ```\n *\n * ```html\n * \n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} maxLength\n * @return {?} A validator function that returns an error map with the\n * `maxlength` property if the validation check fails, otherwise `null`.\n *\n */\n static maxLength(maxLength) {\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n /** @type {?} */\n const length = control.value ? control.value.length : 0;\n return length > maxLength ?\n { 'maxlength': { 'requiredLength': maxLength, 'actualLength': length } } :\n null;\n });\n }\n /**\n * \\@description\n * Validator that requires the control's value to match a regex pattern. This validator is also\n * provided by default if you use the HTML5 `pattern` attribute.\n *\n * \\@usageNotes\n *\n * ### Validate that the field only contains letters or spaces\n *\n * ```typescript\n * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));\n *\n * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}\n * ```\n *\n * ```html\n * \n * ```\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} pattern A regular expression to be used as is to test the values, or a string.\n * If a string is passed, the `^` character is prepended and the `$` character is\n * appended to the provided string (if not already present), and the resulting regular\n * expression is used to test the values.\n *\n * @return {?} A validator function that returns an error map with the\n * `pattern` property if the validation check fails, otherwise `null`.\n *\n */\n static pattern(pattern) {\n if (!pattern)\n return Validators.nullValidator;\n /** @type {?} */\n let regex;\n /** @type {?} */\n let regexStr;\n if (typeof pattern === 'string') {\n regexStr = '';\n if (pattern.charAt(0) !== '^')\n regexStr += '^';\n regexStr += pattern;\n if (pattern.charAt(pattern.length - 1) !== '$')\n regexStr += '$';\n regex = new RegExp(regexStr);\n }\n else {\n regexStr = pattern.toString();\n regex = pattern;\n }\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n /** @type {?} */\n const value = control.value;\n return regex.test(value) ? null :\n { 'pattern': { 'requiredPattern': regexStr, 'actualValue': value } };\n });\n }\n /**\n * \\@description\n * Validator that performs no operation.\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} control\n * @return {?}\n */\n static nullValidator(control) {\n return null;\n }\n /**\n * @param {?} validators\n * @return {?}\n */\n static compose(validators) {\n if (!validators)\n return null;\n /** @type {?} */\n const presentValidators = (/** @type {?} */ (validators.filter(isPresent)));\n if (presentValidators.length == 0)\n return null;\n return (/**\n * @param {?} control\n * @return {?}\n */\n function (control) {\n return _mergeErrors(_executeValidators(control, presentValidators));\n });\n }\n /**\n * \\@description\n * Compose multiple async validators into a single function that returns the union\n * of the individual error objects for the provided control.\n *\n * @see `updateValueAndValidity()`\n *\n * @param {?} validators\n * @return {?} A validator function that returns an error map with the\n * merged error objects of the async validators if the validation check fails, otherwise `null`.\n *\n */\n static composeAsync(validators) {\n if (!validators)\n return null;\n /** @type {?} */\n const presentValidators = (/** @type {?} */ (validators.filter(isPresent)));\n if (presentValidators.length == 0)\n return null;\n return (/**\n * @param {?} control\n * @return {?}\n */\n function (control) {\n /** @type {?} */\n const observables = _executeAsyncValidators(control, presentValidators).map(toObservable);\n return forkJoin(observables).pipe(map(_mergeErrors));\n });\n }\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isPresent(o) {\n return o != null;\n}\n/**\n * @param {?} r\n * @return {?}\n */\nfunction toObservable(r) {\n /** @type {?} */\n const obs = ɵisPromise(r) ? from(r) : r;\n if (!(ɵisObservable(obs))) {\n throw new Error(`Expected validator to return Promise or Observable.`);\n }\n return obs;\n}\n/**\n * @param {?} control\n * @param {?} validators\n * @return {?}\n */\nfunction _executeValidators(control, validators) {\n return validators.map((/**\n * @param {?} v\n * @return {?}\n */\n v => v(control)));\n}\n/**\n * @param {?} control\n * @param {?} validators\n * @return {?}\n */\nfunction _executeAsyncValidators(control, validators) {\n return validators.map((/**\n * @param {?} v\n * @return {?}\n */\n v => v(control)));\n}\n/**\n * @param {?} arrayOfErrors\n * @return {?}\n */\nfunction _mergeErrors(arrayOfErrors) {\n /** @type {?} */\n let res = {};\n // Not using Array.reduce here due to a Chrome 80 bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\n arrayOfErrors.forEach((/**\n * @param {?} errors\n * @return {?}\n */\n (errors) => {\n res = errors != null ? Object.assign(Object.assign({}, (/** @type {?} */ (res))), errors) : (/** @type {?} */ (res));\n }));\n return Object.keys(res).length === 0 ? null : res;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/normalize_validator.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} validator\n * @return {?}\n */\nfunction normalizeValidator(validator) {\n if (((/** @type {?} */ (validator))).validate) {\n return (/**\n * @param {?} c\n * @return {?}\n */\n (c) => ((/** @type {?} */ (validator))).validate(c));\n }\n else {\n return (/** @type {?} */ (validator));\n }\n}\n/**\n * @param {?} validator\n * @return {?}\n */\nfunction normalizeAsyncValidator(validator) {\n if (((/** @type {?} */ (validator))).validate) {\n return (/**\n * @param {?} c\n * @return {?}\n */\n (c) => ((/** @type {?} */ (validator))).validate(c));\n }\n else {\n return (/** @type {?} */ (validator));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/number_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => NumberValueAccessor)),\n multi: true\n};\n/**\n * \\@description\n * The `ControlValueAccessor` for writing a number value and listening to number input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * \\@usageNotes\n *\n * ### Using a number input with a reactive form.\n *\n * The following example shows how to use a number input with a reactive form.\n *\n * ```ts\n * const totalCountControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass NumberValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * \\@description\n * The registered callback function called when a change or input event occurs on the input\n * element.\n */\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * Sets the \"value\" property on the input element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n // The value needs to be normalized for IE9, otherwise it is set to 'null' when null\n /** @type {?} */\n const normalizedValue = value == null ? '' : value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', normalizedValue);\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = (/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n fn(value == '' ? null : parseFloat(value));\n });\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\nNumberValueAccessor.ɵfac = function NumberValueAccessor_Factory(t) { return new (t || NumberValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNumberValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NumberValueAccessor, selectors: [[\"input\", \"type\", \"number\", \"formControlName\", \"\"], [\"input\", \"type\", \"number\", \"formControl\", \"\"], [\"input\", \"type\", \"number\", \"ngModel\", \"\"]], hostBindings: function NumberValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NumberValueAccessor_change_HostBindingHandler($event) { return ctx.onChange($event.target.value); })(\"input\", function NumberValueAccessor_input_HostBindingHandler($event) { return ctx.onChange($event.target.value); })(\"blur\", function NumberValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([NUMBER_VALUE_ACCESSOR])] });\n/** @nocollapse */\nNumberValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NumberValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',\n host: {\n '(change)': 'onChange($event.target.value)',\n '(input)': 'onChange($event.target.value)',\n '(blur)': 'onTouched()'\n },\n providers: [NUMBER_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, null); })();\nif (false) {\n /**\n * \\@description\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @type {?}\n */\n NumberValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n NumberValueAccessor.prototype.onTouched;\n /**\n * @type {?}\n * @private\n */\n NumberValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n NumberValueAccessor.prototype._elementRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/radio_control_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => RadioControlValueAccessor)),\n multi: true\n};\n/**\n * \\@description\n * Class used by Angular to track radio buttons. For internal use only.\n */\nclass RadioControlRegistry {\n constructor() {\n this._accessors = [];\n }\n /**\n * \\@description\n * Adds a control to the internal registry. For internal use only.\n * @param {?} control\n * @param {?} accessor\n * @return {?}\n */\n add(control, accessor) {\n this._accessors.push([control, accessor]);\n }\n /**\n * \\@description\n * Removes a control from the internal registry. For internal use only.\n * @param {?} accessor\n * @return {?}\n */\n remove(accessor) {\n for (let i = this._accessors.length - 1; i >= 0; --i) {\n if (this._accessors[i][1] === accessor) {\n this._accessors.splice(i, 1);\n return;\n }\n }\n }\n /**\n * \\@description\n * Selects a radio button. For internal use only.\n * @param {?} accessor\n * @return {?}\n */\n select(accessor) {\n this._accessors.forEach((/**\n * @param {?} c\n * @return {?}\n */\n (c) => {\n if (this._isSameGroup(c, accessor) && c[1] !== accessor) {\n c[1].fireUncheck(accessor.value);\n }\n }));\n }\n /**\n * @private\n * @param {?} controlPair\n * @param {?} accessor\n * @return {?}\n */\n _isSameGroup(controlPair, accessor) {\n if (!controlPair[0].control)\n return false;\n return controlPair[0]._parent === accessor._control._parent &&\n controlPair[1].name === accessor.name;\n }\n}\nRadioControlRegistry.ɵfac = function RadioControlRegistry_Factory(t) { return new (t || RadioControlRegistry)(); };\nRadioControlRegistry.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: RadioControlRegistry, factory: RadioControlRegistry.ɵfac });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RadioControlRegistry, [{\n type: Injectable\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n RadioControlRegistry.prototype._accessors;\n}\n/**\n * \\@description\n * The `ControlValueAccessor` for writing radio control values and listening to radio control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * \\@usageNotes\n *\n * ### Using radio buttons with reactive form directives\n *\n * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in\n * a reactive form, radio buttons in the same group should have the same `formControlName`.\n * Providing a `name` attribute is optional.\n *\n * {\\@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass RadioControlValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _registry\n * @param {?} _injector\n */\n constructor(_renderer, _elementRef, _registry, _injector) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._registry = _registry;\n this._injector = _injector;\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n */\n this.onChange = (/**\n * @return {?}\n */\n () => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * \\@description\n * A lifecycle method called when the directive is initialized. For internal use only.\n * @return {?}\n */\n ngOnInit() {\n this._control = this._injector.get(NgControl);\n this._checkName();\n this._registry.add(this._control, this);\n }\n /**\n * \\@description\n * Lifecycle method called before the directive's instance is destroyed. For internal use only.\n * @return {?}\n */\n ngOnDestroy() {\n this._registry.remove(this);\n }\n /**\n * \\@description\n * Sets the \"checked\" property value on the radio input element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n this._state = value === this.value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'checked', this._state);\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this._fn = fn;\n this.onChange = (/**\n * @return {?}\n */\n () => {\n fn(this.value);\n this._registry.select(this);\n });\n }\n /**\n * Sets the \"value\" on the radio input element and unchecks it.\n *\n * @param {?} value\n * @return {?}\n */\n fireUncheck(value) {\n this.writeValue(value);\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * @private\n * @return {?}\n */\n _checkName() {\n if (this.name && this.formControlName && this.name !== this.formControlName) {\n this._throwNameError();\n }\n if (!this.name && this.formControlName)\n this.name = this.formControlName;\n }\n /**\n * @private\n * @return {?}\n */\n _throwNameError() {\n throw new Error(`\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: \n `);\n }\n}\nRadioControlValueAccessor.ɵfac = function RadioControlValueAccessor_Factory(t) { return new (t || RadioControlValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(RadioControlRegistry), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector)); };\nRadioControlValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: RadioControlValueAccessor, selectors: [[\"input\", \"type\", \"radio\", \"formControlName\", \"\"], [\"input\", \"type\", \"radio\", \"formControl\", \"\"], [\"input\", \"type\", \"radio\", \"ngModel\", \"\"]], hostBindings: function RadioControlValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function RadioControlValueAccessor_change_HostBindingHandler() { return ctx.onChange(); })(\"blur\", function RadioControlValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, inputs: { name: \"name\", formControlName: \"formControlName\", value: \"value\" }, features: [ɵngcc0.ɵɵProvidersFeature([RADIO_VALUE_ACCESSOR])] });\n/** @nocollapse */\nRadioControlValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: RadioControlRegistry },\n { type: Injector }\n];\nRadioControlValueAccessor.propDecorators = {\n name: [{ type: Input }],\n formControlName: [{ type: Input }],\n value: [{ type: Input }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RadioControlValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',\n host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },\n providers: [RADIO_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: RadioControlRegistry }, { type: ɵngcc0.Injector }]; }, { name: [{\n type: Input\n }], formControlName: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\nif (false) {\n /**\n * \\@internal\n * @type {?}\n */\n RadioControlValueAccessor.prototype._state;\n /**\n * \\@internal\n * @type {?}\n */\n RadioControlValueAccessor.prototype._control;\n /**\n * \\@internal\n * @type {?}\n */\n RadioControlValueAccessor.prototype._fn;\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n * @type {?}\n */\n RadioControlValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n RadioControlValueAccessor.prototype.onTouched;\n /**\n * \\@description\n * Tracks the name of the radio input element.\n * @type {?}\n */\n RadioControlValueAccessor.prototype.name;\n /**\n * \\@description\n * Tracks the name of the `FormControl` bound to the directive. The name corresponds\n * to a key in the parent `FormGroup` or `FormArray`.\n * @type {?}\n */\n RadioControlValueAccessor.prototype.formControlName;\n /**\n * \\@description\n * Tracks the value of the radio input element\n * @type {?}\n */\n RadioControlValueAccessor.prototype.value;\n /**\n * @type {?}\n * @private\n */\n RadioControlValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n RadioControlValueAccessor.prototype._elementRef;\n /**\n * @type {?}\n * @private\n */\n RadioControlValueAccessor.prototype._registry;\n /**\n * @type {?}\n * @private\n */\n RadioControlValueAccessor.prototype._injector;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/range_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => RangeValueAccessor)),\n multi: true\n};\n/**\n * \\@description\n * The `ControlValueAccessor` for writing a range value and listening to range input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * \\@usageNotes\n *\n * ### Using a range input with a reactive form\n *\n * The following example shows how to use a range input with a reactive form.\n *\n * ```ts\n * const ageControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass RangeValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * \\@description\n * The registered callback function called when a change or input event occurs on the input\n * element.\n */\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * Sets the \"value\" property on the input element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', parseFloat(value));\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = (/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n fn(value == '' ? null : parseFloat(value));\n });\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the range input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\nRangeValueAccessor.ɵfac = function RangeValueAccessor_Factory(t) { return new (t || RangeValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nRangeValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: RangeValueAccessor, selectors: [[\"input\", \"type\", \"range\", \"formControlName\", \"\"], [\"input\", \"type\", \"range\", \"formControl\", \"\"], [\"input\", \"type\", \"range\", \"ngModel\", \"\"]], hostBindings: function RangeValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function RangeValueAccessor_change_HostBindingHandler($event) { return ctx.onChange($event.target.value); })(\"input\", function RangeValueAccessor_input_HostBindingHandler($event) { return ctx.onChange($event.target.value); })(\"blur\", function RangeValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([RANGE_VALUE_ACCESSOR])] });\n/** @nocollapse */\nRangeValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(RangeValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',\n host: {\n '(change)': 'onChange($event.target.value)',\n '(input)': 'onChange($event.target.value)',\n '(blur)': 'onTouched()'\n },\n providers: [RANGE_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, null); })();\nif (false) {\n /**\n * \\@description\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @type {?}\n */\n RangeValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n RangeValueAccessor.prototype.onTouched;\n /**\n * @type {?}\n * @private\n */\n RangeValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n RangeValueAccessor.prototype._elementRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/error_examples.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @type {?} */\nconst FormErrorExamples = {\n formControlName: `\n
\n \n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });`,\n formGroupName: `\n
\n
\n \n
\n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });`,\n formArrayName: `\n
\n
\n
\n \n
\n
\n
\n\n In your class:\n\n this.cityArray = new FormArray([new FormControl('SF')]);\n this.myGroup = new FormGroup({\n cities: this.cityArray\n });`,\n ngModelGroup: `\n
\n
\n \n
\n
`,\n ngModelWithFormGroup: `\n
\n \n \n
\n `\n};\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/reactive_errors.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ReactiveErrors {\n /**\n * @return {?}\n */\n static controlParentException() {\n throw new Error(`formControlName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${FormErrorExamples.formControlName}`);\n }\n /**\n * @return {?}\n */\n static ngModelGroupException() {\n throw new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.\n\n Option 1: Update the parent to be formGroupName (reactive form strategy)\n\n ${FormErrorExamples.formGroupName}\n\n Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n ${FormErrorExamples.ngModelGroup}`);\n }\n /**\n * @return {?}\n */\n static missingFormException() {\n throw new Error(`formGroup expects a FormGroup instance. Please pass one in.\n\n Example:\n\n ${FormErrorExamples.formControlName}`);\n }\n /**\n * @return {?}\n */\n static groupParentException() {\n throw new Error(`formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${FormErrorExamples.formGroupName}`);\n }\n /**\n * @return {?}\n */\n static arrayParentException() {\n throw new Error(`formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${FormErrorExamples.formArrayName}`);\n }\n /**\n * @return {?}\n */\n static disabledAttrWarning() {\n console.warn(`\n It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n you. We recommend using this approach to avoid 'changed after checked' errors.\n \n Example: \n form = new FormGroup({\n first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n last: new FormControl('Drew', Validators.required)\n });\n `);\n }\n /**\n * @param {?} directiveName\n * @return {?}\n */\n static ngModelWarning(directiveName) {\n console.warn(`\n It looks like you're using ngModel on the same form field as ${directiveName}. \n Support for using the ngModel input property and ngModelChange event with \n reactive form directives has been deprecated in Angular v6 and will be removed \n in Angular v7.\n \n For more information on this, see our API docs here:\n https://angular.io/api/forms/${directiveName === 'formControl' ? 'FormControlDirective' :\n 'FormControlName'}#use-with-ngmodel\n `);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/forms/src/directives/select_control_value_accessor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst SELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n () => SelectControlValueAccessor)),\n multi: true\n};\n/**\n * @param {?} id\n * @param {?} value\n * @return {?}\n */\nfunction _buildValueString(id, value) {\n if (id == null)\n return `${value}`;\n if (value && typeof value === 'object')\n value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\n/**\n * @param {?} valueString\n * @return {?}\n */\nfunction _extractId(valueString) {\n return valueString.split(':')[0];\n}\n/**\n * \\@description\n * The `ControlValueAccessor` for writing select control values and listening to select control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * \\@usageNotes\n *\n * ### Using select controls in a reactive form\n *\n * The following examples show how to use a select control in a reactive form.\n *\n * {\\@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}\n *\n * ### Using select controls in a template-driven form\n *\n * To use a select in a template-driven form, simply add an `ngModel` and a `name`\n * attribute to the main `` supports `compareWith` input.\n * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.\n * If `compareWith` is given, Angular selects option by the return value of the function.\n *\n * ```ts\n * const selectedCountriesControl = new FormControl();\n * ```\n *\n * ```\n * \n *\n * compareFn(c1: Country, c2: Country): boolean {\n * return c1 && c2 ? c1.id === c2.id : c1 === c2;\n * }\n * ```\n *\n * **Note:** We listen to the 'change' event because 'input' events aren't fired\n * for selects in Firefox and IE:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1024350\n * https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4660045/\n *\n * \\@ngModule ReactiveFormsModule\n * \\@ngModule FormsModule\n * \\@publicApi\n */\nclass SelectControlValueAccessor {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * \\@internal\n */\n this._optionMap = new Map();\n /**\n * \\@internal\n */\n this._idCounter = 0;\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n */\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n */\n this.onTouched = (/**\n * @return {?}\n */\n () => { });\n this._compareWith = ɵlooseIdentical;\n }\n /**\n * \\@description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n * @param {?} fn\n * @return {?}\n */\n set compareWith(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on the input element. The \"selectedIndex\"\n * property is also set if an ID is provided on the option element.\n *\n * @param {?} value The checked value\n * @return {?}\n */\n writeValue(value) {\n this.value = value;\n /** @type {?} */\n const id = this._getOptionId(value);\n if (id == null) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'selectedIndex', -1);\n }\n /** @type {?} */\n const valueString = _buildValueString(id, value);\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', valueString);\n }\n /**\n * \\@description\n * Registers a function called when the control value changes.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = (/**\n * @param {?} valueString\n * @return {?}\n */\n (valueString) => {\n this.value = this._getOptionValue(valueString);\n fn(this.value);\n });\n }\n /**\n * \\@description\n * Registers a function called when the control is touched.\n *\n * @param {?} fn The callback function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the select input element.\n *\n * @param {?} isDisabled The disabled value\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * \\@internal\n * @return {?}\n */\n _registerOption() {\n return (this._idCounter++).toString();\n }\n /**\n * \\@internal\n * @param {?} value\n * @return {?}\n */\n _getOptionId(value) {\n for (const id of Array.from(this._optionMap.keys())) {\n if (this._compareWith(this._optionMap.get(id), value))\n return id;\n }\n return null;\n }\n /**\n * \\@internal\n * @param {?} valueString\n * @return {?}\n */\n _getOptionValue(valueString) {\n /** @type {?} */\n const id = _extractId(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\n }\n}\nSelectControlValueAccessor.ɵfac = function SelectControlValueAccessor_Factory(t) { return new (t || SelectControlValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nSelectControlValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: SelectControlValueAccessor, selectors: [[\"select\", \"formControlName\", \"\", 3, \"multiple\", \"\"], [\"select\", \"formControl\", \"\", 3, \"multiple\", \"\"], [\"select\", \"ngModel\", \"\", 3, \"multiple\", \"\"]], hostBindings: function SelectControlValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function SelectControlValueAccessor_change_HostBindingHandler($event) { return ctx.onChange($event.target.value); })(\"blur\", function SelectControlValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, inputs: { compareWith: \"compareWith\" }, features: [ɵngcc0.ɵɵProvidersFeature([SELECT_VALUE_ACCESSOR])] });\n/** @nocollapse */\nSelectControlValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\nSelectControlValueAccessor.propDecorators = {\n compareWith: [{ type: Input }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SelectControlValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',\n host: { '(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [SELECT_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { compareWith: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n SelectControlValueAccessor.prototype.value;\n /**\n * \\@internal\n * @type {?}\n */\n SelectControlValueAccessor.prototype._optionMap;\n /**\n * \\@internal\n * @type {?}\n */\n SelectControlValueAccessor.prototype._idCounter;\n /**\n * \\@description\n * The registered callback function called when a change event occurs on the input element.\n * @type {?}\n */\n SelectControlValueAccessor.prototype.onChange;\n /**\n * \\@description\n * The registered callback function called when a blur event occurs on the input element.\n * @type {?}\n */\n SelectControlValueAccessor.prototype.onTouched;\n /**\n * @type {?}\n * @private\n */\n SelectControlValueAccessor.prototype._compareWith;\n /**\n * @type {?}\n * @private\n */\n SelectControlValueAccessor.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n SelectControlValueAccessor.prototype._elementRef;\n}\n/**\n * \\@description\n * Marks `