From 7d1a980ad2db5a3be8fe1cabf5898e5bebf9d6f9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 13 Dec 2017 16:29:36 -0800 Subject: [PATCH 01/16] First attempt. Basically broken. --- src/compiler/checker.ts | 85 ++++++++++++++++++++++------------------- src/compiler/types.ts | 6 +++ 2 files changed, 51 insertions(+), 40 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c1b57e5def7..d333424dcb3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -334,6 +334,7 @@ namespace ts { const jsObjectLiteralIndexInfo = createIndexInfo(anyType, /*isReadonly*/ false); const globals = createSymbolTable(); + const deferredInferenceCache = createMap(); let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -4867,6 +4868,9 @@ namespace ts { if (getCheckFlags(symbol) & CheckFlags.Instantiated) { return getTypeOfInstantiatedSymbol(symbol); } + if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { + return inferTargetType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); + } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { return getTypeOfVariableOrParameterOrProperty(symbol); } @@ -11224,42 +11228,49 @@ namespace ts { * property is computed by inferring from the source property type to X for the type * variable T[P] (i.e. we treat the type T[P] as the type variable we're inferring for). */ - function inferTypeForHomomorphicMappedType(source: Type, target: MappedType, mappedTypeStack: string[]): Type { - const properties = getPropertiesOfType(source); - let indexInfo = getIndexInfoOfType(source, IndexKind.String); - if (properties.length === 0 && !indexInfo) { - return undefined; + function inferTypeForHomomorphicMappedType(source: Type, target: MappedType): Type { + const key = source.id + "," + target.id; + if (deferredInferenceCache.has(key)) { + return deferredInferenceCache.get(key); } - const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); - const inference = createInferenceInfo(typeParameter); - const inferences = [inference]; - const templateType = getTemplateTypeFromMappedType(target); - const readonlyMask = target.declaration.readonlyToken ? false : true; - const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; - const members = createSymbolTable(); - for (const prop of properties) { - const propType = getTypeOfSymbol(prop); - // If any property contains context sensitive functions that have been skipped, the source type - // is incomplete and we can't infer a meaningful input type. - if (propType.flags & TypeFlags.ContainsAnyFunctionType) { + deferredInferenceCache.set(key, function() { + const properties = getPropertiesOfType(source); + let indexInfo = getIndexInfoOfType(source, IndexKind.String); + if (properties.length === 0 && !indexInfo) { return undefined; } - const checkFlags = readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0; - const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags); - inferredProp.declarations = prop.declarations; - inferredProp.type = inferTargetType(propType); - members.set(prop.escapedName, inferredProp); - } - if (indexInfo) { - indexInfo = createIndexInfo(inferTargetType(indexInfo.type), readonlyMask && indexInfo.isReadonly); - } - return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); + const readonlyMask = target.declaration.readonlyToken ? false : true; + const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; + const members = createSymbolTable(); + for (const prop of properties) { + const propType = getTypeOfSymbol(prop); + // If any property contains context sensitive functions that have been skipped, the source type + // is incomplete and we can't infer a meaningful input type. + if (propType.flags & TypeFlags.ContainsAnyFunctionType) { + return undefined; + } + const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; + inferredProp.declarations = prop.declarations; + inferredProp.propertyType = propType; // not sure I need this. + inferredProp.mappedType = target; + members.set(prop.escapedName, inferredProp); + } + if (indexInfo) { + // TODO: Defer this too. BARREL OF LAUGHS RIGHT THERE + indexInfo = createIndexInfo(inferTargetType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); + } + return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); + }()); + } - function inferTargetType(sourceType: Type): Type { - inference.candidates = undefined; - inferTypes(inferences, sourceType, templateType, 0, mappedTypeStack); - return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; - } + function inferTargetType(sourceType: Type, target: MappedType): Type { + const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); + const templateType = getTemplateTypeFromMappedType(target); + const inference = createInferenceInfo(typeParameter); + inference.candidates = undefined; + inferTypes([inference], sourceType, templateType); + return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; } function getUnmatchedProperty(source: Type, target: Type, requireOptionalProperties: boolean) { @@ -11275,7 +11286,7 @@ namespace ts { return undefined; } - function inferTypes(inferences: InferenceInfo[], originalSource: Type, originalTarget: Type, priority: InferencePriority = 0, mappedTypeStack?: string[]) { + function inferTypes(inferences: InferenceInfo[], originalSource: Type, originalTarget: Type, priority: InferencePriority = 0) { let symbolStack: Symbol[]; let visited: Map; inferFromTypes(originalSource, originalTarget); @@ -11492,13 +11503,7 @@ namespace ts { // such that direct inferences to T get priority over inferences to Partial, for example. const inference = getInferenceInfoForType((constraintType).type); if (inference && !inference.isFixed) { - const key = (source.symbol ? getSymbolId(source.symbol) + "," : "") + getSymbolId(target.symbol); - if (contains(mappedTypeStack, key)) { - return; - } - (mappedTypeStack || (mappedTypeStack = [])).push(key); - const inferredType = inferTypeForHomomorphicMappedType(source, target, mappedTypeStack); - mappedTypeStack.pop(); + const inferredType = inferTypeForHomomorphicMappedType(source, target); if (inferredType) { const savePriority = priority; priority |= InferencePriority.MappedType; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 54f2ebfae42..16f546cecb2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3217,6 +3217,7 @@ namespace ts { ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s) ContainsStatic = 1 << 9, // Synthetic property with static constituent(s) Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name + DeferredInferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. It is HILARIOUS. Synthetic = SyntheticProperty | SyntheticMethod } @@ -3226,6 +3227,11 @@ namespace ts { isRestParameter?: boolean; } + export interface DeferredTransientSymbol extends TransientSymbol { + propertyType: Type; + mappedType: MappedType; + } + export const enum InternalSymbolName { Call = "__call", // Call signatures Constructor = "__constructor", // Constructor implementations From 05de0a7da392e5385192f7638adeb249d98e695b Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 13:33:02 -0800 Subject: [PATCH 02/16] Get it working: 1. Actually return the cached result! 2. Unnest worker function. 3. Improve all the names. 4. Pre-set the cache to undefined to avoid loops. (Not sure this is needed, though.) 5. Make the new type internal to avoid baseline changes. 6. Cut off recursion in the printing of recursive deferred mapped types. Note that (6) required introducing a new stack that is exactly like mappedTypeStack. I think the cache may actually be needed here, not in the creation of the deferred type. --- src/compiler/checker.ts | 41 +++++++++++++++---- src/compiler/types.ts | 1 + .../mappedTypeRecursiveInference.types | 4 +- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d333424dcb3..dbc12b1461a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -335,6 +335,7 @@ namespace ts { const globals = createSymbolTable(); const deferredInferenceCache = createMap(); + const deferredMappedTypeInstantiationStack: string[] = []; let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -2867,7 +2868,23 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getTypeOfSymbol(propertySymbol); + let propertyType: Type; + if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { + const deferred = propertySymbol as DeferredTransientSymbol; + const key = deferred.propertyType.id + "," + (deferred.mappedType.symbol ? deferred.mappedType.symbol.id : ""); + // Temporary solution to recursive printing: zero out repeated types. + if (contains(deferredMappedTypeInstantiationStack, key)) { + // TODO: Could probably be an actual cache that returns {} when it contains undefined. + propertyType = emptyObjectType; + } + else { + deferredMappedTypeInstantiationStack.push(key) + propertyType = getTypeOfSymbol(propertySymbol); + } + } + else { + propertyType = getTypeOfSymbol(propertySymbol); + } const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -2894,6 +2911,9 @@ namespace ts { /*initializer*/ undefined); typeElements.push(propertySignature); } + if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { + deferredMappedTypeInstantiationStack.pop(); + } } return typeElements.length ? typeElements : undefined; } @@ -4869,7 +4889,7 @@ namespace ts { return getTypeOfInstantiatedSymbol(symbol); } if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { - return inferTargetType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); + return inferDeferredMappedType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { return getTypeOfVariableOrParameterOrProperty(symbol); @@ -11233,7 +11253,13 @@ namespace ts { if (deferredInferenceCache.has(key)) { return deferredInferenceCache.get(key); } - deferredInferenceCache.set(key, function() { + deferredInferenceCache.set(key, undefined); + const type = createDeferredMappedType(source, target); + deferredInferenceCache.set(key, type); + return type; + } + + function createDeferredMappedType(source: Type, target: MappedType) { const properties = getPropertiesOfType(source); let indexInfo = getIndexInfoOfType(source, IndexKind.String); if (properties.length === 0 && !indexInfo) { @@ -11257,14 +11283,15 @@ namespace ts { members.set(prop.escapedName, inferredProp); } if (indexInfo) { - // TODO: Defer this too. BARREL OF LAUGHS RIGHT THERE - indexInfo = createIndexInfo(inferTargetType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); + // TODO: Defer this too. + // (probably the simplest way is to have a special type that defers the creation of (at least) its index info in + // resolveStructuredTypeMembers + indexInfo = createIndexInfo(inferDeferredMappedType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); } return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); - }()); } - function inferTargetType(sourceType: Type, target: MappedType): Type { + function inferDeferredMappedType(sourceType: Type, target: MappedType): Type { const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(typeParameter); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 16f546cecb2..dc8c6d71618 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3227,6 +3227,7 @@ namespace ts { isRestParameter?: boolean; } + /* @internal */ export interface DeferredTransientSymbol extends TransientSymbol { propertyType: Type; mappedType: MappedType; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 382135591d5..0da9029f379 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -26,8 +26,8 @@ declare function foo(deep: Deep): T; >T : T const out = foo(a); ->out : { a: {}; } ->foo(a) : { a: {}; } +>out : { a: { a: {}; }; } +>foo(a) : { a: { a: {}; }; } >foo : (deep: Deep) => T >a : A From 6b024f64955bea7d2d6720bb28df5af355590dc6 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 11 Dec 2017 09:47:04 -0800 Subject: [PATCH 03/16] Test:XMLHttpRequest inference to PartialDeep Compilation didn't finish before! Now it does. --- .../reference/mappedTypeRecursiveInference.js | 5 +++++ .../reference/mappedTypeRecursiveInference.symbols | 9 +++++++++ .../reference/mappedTypeRecursiveInference.types | 10 ++++++++++ tests/cases/compiler/mappedTypeRecursiveInference.ts | 4 ++++ 4 files changed, 28 insertions(+) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.js b/tests/baselines/reference/mappedTypeRecursiveInference.js index 5b7631818bc..eda4d0b618e 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.js +++ b/tests/baselines/reference/mappedTypeRecursiveInference.js @@ -4,7 +4,12 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); + +let xhr: XMLHttpRequest; +const out2 = foo(xhr); //// [mappedTypeRecursiveInference.js] var out = foo(a); +var xhr; +var out2 = foo(xhr); diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.symbols b/tests/baselines/reference/mappedTypeRecursiveInference.symbols index a3fa3722551..96ed980c4c2 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference.symbols @@ -30,3 +30,12 @@ const out = foo(a); >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11)) +let xhr: XMLHttpRequest; +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) + +const out2 = foo(xhr); +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 7, 5)) +>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) + diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 0da9029f379..8dbc33e0b2a 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -31,3 +31,13 @@ const out = foo(a); >foo : (deep: Deep) => T >a : A +let xhr: XMLHttpRequest; +>xhr : XMLHttpRequest +>XMLHttpRequest : XMLHttpRequest + +const out2 = foo(xhr); +>out2 : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo(xhr) : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo : (deep: Deep) => T +>xhr : XMLHttpRequest + diff --git a/tests/cases/compiler/mappedTypeRecursiveInference.ts b/tests/cases/compiler/mappedTypeRecursiveInference.ts index d7a9cf3a0be..e264244095d 100644 --- a/tests/cases/compiler/mappedTypeRecursiveInference.ts +++ b/tests/cases/compiler/mappedTypeRecursiveInference.ts @@ -1,5 +1,9 @@ +// @lib: es6, dom interface A { a: A } declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); + +let xhr: XMLHttpRequest; +const out2 = foo(xhr); From 955db84f2c556fddc459bab28440c681fa3d7d81 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:03:12 -0800 Subject: [PATCH 04/16] Simplify printing of deferred mapped types Just print {} for the type of deferred symbols. This is simple although it loses fidelity pretty badly. It will not be sufficient for projects that want to export the result of an inference. I don't think any such projects exist right now, though. --- src/compiler/checker.ts | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dbc12b1461a..6fc9ae48ae2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -335,7 +335,6 @@ namespace ts { const globals = createSymbolTable(); const deferredInferenceCache = createMap(); - const deferredMappedTypeInstantiationStack: string[] = []; let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -2868,23 +2867,7 @@ namespace ts { } for (const propertySymbol of properties) { - let propertyType: Type; - if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { - const deferred = propertySymbol as DeferredTransientSymbol; - const key = deferred.propertyType.id + "," + (deferred.mappedType.symbol ? deferred.mappedType.symbol.id : ""); - // Temporary solution to recursive printing: zero out repeated types. - if (contains(deferredMappedTypeInstantiationStack, key)) { - // TODO: Could probably be an actual cache that returns {} when it contains undefined. - propertyType = emptyObjectType; - } - else { - deferredMappedTypeInstantiationStack.push(key) - propertyType = getTypeOfSymbol(propertySymbol); - } - } - else { - propertyType = getTypeOfSymbol(propertySymbol); - } + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -2911,9 +2894,6 @@ namespace ts { /*initializer*/ undefined); typeElements.push(propertySignature); } - if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { - deferredMappedTypeInstantiationStack.pop(); - } } return typeElements.length ? typeElements : undefined; } @@ -11278,7 +11258,7 @@ namespace ts { const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; inferredProp.declarations = prop.declarations; - inferredProp.propertyType = propType; // not sure I need this. + inferredProp.propertyType = propType; inferredProp.mappedType = target; members.set(prop.escapedName, inferredProp); } @@ -11295,7 +11275,6 @@ namespace ts { const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(typeParameter); - inference.candidates = undefined; inferTypes([inference], sourceType, templateType); return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; } From 5b45cf3db17e592b7415536b1b09e24c94ae08e1 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:11:29 -0800 Subject: [PATCH 05/16] Update spelling --- src/compiler/checker.ts | 6 +++--- src/compiler/types.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6fc9ae48ae2..8833afbf32c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2867,7 +2867,7 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.Deferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -4868,7 +4868,7 @@ namespace ts { if (getCheckFlags(symbol) & CheckFlags.Instantiated) { return getTypeOfInstantiatedSymbol(symbol); } - if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { + if (getCheckFlags(symbol) & CheckFlags.Deferred) { return inferDeferredMappedType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { @@ -11255,7 +11255,7 @@ namespace ts { if (propType.flags & TypeFlags.ContainsAnyFunctionType) { return undefined; } - const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; inferredProp.declarations = prop.declarations; inferredProp.propertyType = propType; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index dc8c6d71618..afa62c0a382 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3217,7 +3217,7 @@ namespace ts { ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s) ContainsStatic = 1 << 9, // Synthetic property with static constituent(s) Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name - DeferredInferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. It is HILARIOUS. + Deferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. Synthetic = SyntheticProperty | SyntheticMethod } From dd941e5665a8dd5742217fd255e7fc560001f967 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:11:49 -0800 Subject: [PATCH 06/16] Add more tests of deferred mapped types --- .../isomorphicMappedTypeInference.types | 38 ++++++------- .../reference/keyofAndIndexedAccess.types | 4 +- .../mappedTypeInferenceErrors.errors.txt | 12 ++--- .../reference/mappedTypeRecursiveInference.js | 10 ++++ .../mappedTypeRecursiveInference.symbols | 51 ++++++++++++++++-- .../mappedTypeRecursiveInference.types | 53 +++++++++++++++++-- .../reference/thisTypeInObjectLiterals2.types | 30 +++++------ .../compiler/mappedTypeRecursiveInference.ts | 5 ++ 8 files changed, 154 insertions(+), 49 deletions(-) diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index e60e1fb7b4c..a7e4011109a 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -203,15 +203,15 @@ function f2() { }; let v = unboxify(b); ->v : { a: number; b: string; c: boolean; } ->unboxify(b) : { a: number; b: string; c: boolean; } +>v : { a: {}; b: {}; c: {}; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } let x: number = v.a; >x : number >v.a : number ->v : { a: number; b: string; c: boolean; } +>v : { a: {}; b: {}; c: {}; } >a : number } @@ -277,11 +277,11 @@ function f4() { }; b = boxify(unboxify(b)); ->b = boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> +>b = boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> >b : { a: Box; b: Box; c: Box; } ->boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> +>boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> >boxify : (obj: T) => Boxified ->unboxify(b) : { a: number; b: string; c: boolean; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } @@ -338,15 +338,15 @@ function f5(s: string) { }); let v = unboxify(b); ->v : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } ->unboxify(b) : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } +>v : { a: {}; b: {}; c: {}; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } let x: string | number | boolean = v.a; >x : string | number | boolean >v.a : string | number | boolean ->v : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } +>v : { a: {}; b: {}; c: {}; } >a : string | number | boolean } @@ -449,20 +449,20 @@ function f10(foo: Foo) { >Foo : Foo let x = validate(foo); // { a: number, readonly b: string } ->x : { a: number; readonly b: string; } ->validate(foo) : { a: number; readonly b: string; } +>x : { a: {}; readonly b: {}; } +>validate(foo) : { a: {}; readonly b: {}; } >validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo let y = clone(foo); // { a?: number, b: string } ->y : { a?: number | undefined; b: string; } ->clone(foo) : { a?: number | undefined; b: string; } +>y : { a?: {}; b: {}; } +>clone(foo) : { a?: {}; b: {}; } >clone : (obj: { readonly [P in keyof T]: T[P]; }) => T >foo : Foo let z = validateAndClone(foo); // { a: number, b: string } ->z : { a: number; b: string; } ->validateAndClone(foo) : { a: number; b: string; } +>z : { a: {}; b: {}; } +>validateAndClone(foo) : { a: {}; b: {}; } >validateAndClone : (obj: { readonly [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo } @@ -507,8 +507,8 @@ declare function applySpec(obj: Spec): (...args: any[]) => T; // Infers g1: (...args: any[]) => { sum: number, nested: { mul: string } } var g1 = applySpec({ ->g1 : (...args: any[]) => { sum: number; nested: { mul: string; }; } ->applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: number; nested: { mul: string; }; } +>g1 : (...args: any[]) => { sum: {}; nested: {}; } +>applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: {}; nested: {}; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }} : { sum: (a: any) => number; nested: { mul: (b: any) => string; }; } @@ -532,8 +532,8 @@ var g1 = applySpec({ // Infers g2: (...args: any[]) => { foo: { bar: { baz: boolean } } } var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); ->g2 : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } ->applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } +>g2 : (...args: any[]) => { foo: {}; } +>applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: {}; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ foo: { bar: { baz: (x: any) => true } } } : { foo: { bar: { baz: (x: any) => boolean; }; }; } >foo : { bar: { baz: (x: any) => boolean; }; } diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index bf95972be76..9e09c2a3c35 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1801,8 +1801,8 @@ var hashOfEmpty1 = on({ test: () => {} }); // {} >() => {} : () => void var hashOfEmpty2 = on({ test: (x: boolean) => {} }); // { test: boolean } ->hashOfEmpty2 : { test: boolean; } ->on({ test: (x: boolean) => {} }) : { test: boolean; } +>hashOfEmpty2 : { test: {}; } +>on({ test: (x: boolean) => {} }) : { test: {}; } >on : (handlerHash: Handlers) => T >{ test: (x: boolean) => {} } : { test: (x: boolean) => void; } >test : (x: boolean) => void diff --git a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt index 28bc188f7b6..2293fd6bfd5 100644 --- a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt +++ b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: number; baz: {}; }>'. - Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; }'. +tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. + Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. Types of property 'computed' are incompatible. - Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: number; baz: {}; }>'. + Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. Types of property 'baz' are incompatible. Type 'number' is not assignable to type '() => {}'. @@ -35,10 +35,10 @@ tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS ~~~~~ }); ~ -!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: number; baz: {}; }>'. -!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; }'. +!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. +!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. !!! error TS2345: Types of property 'computed' are incompatible. -!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: number; baz: {}; }>'. +!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. !!! error TS2345: Types of property 'baz' are incompatible. !!! error TS2345: Type 'number' is not assignable to type '() => {}'. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.js b/tests/baselines/reference/mappedTypeRecursiveInference.js index eda4d0b618e..c1b5bc6f7bf 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.js +++ b/tests/baselines/reference/mappedTypeRecursiveInference.js @@ -4,12 +4,22 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); +out.a +out.a.a +out.a.a.a.a.a.a.a let xhr: XMLHttpRequest; const out2 = foo(xhr); +out2.responseXML +out2.responseXML.activeElement.className.length //// [mappedTypeRecursiveInference.js] var out = foo(a); +out.a; +out.a.a; +out.a.a.a.a.a.a.a; var xhr; var out2 = foo(xhr); +out2.responseXML; +out2.responseXML.activeElement.className.length; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.symbols b/tests/baselines/reference/mappedTypeRecursiveInference.symbols index 96ed980c4c2..089468d4aa8 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference.symbols @@ -30,12 +30,57 @@ const out = foo(a); >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11)) +out.a +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + +out.a.a +>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + +out.a.a.a.a.a.a.a +>out.a.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + let xhr: XMLHttpRequest; ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) >XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) const out2 = foo(xhr); ->out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 7, 5)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) + +out2.responseXML +>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) + +out2.responseXML.activeElement.className.length +>out2.responseXML.activeElement.className.length : Symbol(length, Decl(lib.es5.d.ts, --, --)) +>out2.responseXML.activeElement.className : Symbol(className, Decl(lib.dom.d.ts, --, --)) +>out2.responseXML.activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) +>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) +>className : Symbol(className, Decl(lib.dom.d.ts, --, --)) +>length : Symbol(length, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 8dbc33e0b2a..eccb4ff65a1 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -26,18 +26,63 @@ declare function foo(deep: Deep): T; >T : T const out = foo(a); ->out : { a: { a: {}; }; } ->foo(a) : { a: { a: {}; }; } +>out : { a: {}; } +>foo(a) : { a: {}; } >foo : (deep: Deep) => T >a : A +out.a +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } + +out.a.a +>out.a.a : { a: {}; } +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } + +out.a.a.a.a.a.a.a +>out.a.a.a.a.a.a.a : { a: {}; } +>out.a.a.a.a.a.a : { a: {}; } +>out.a.a.a.a.a : { a: {}; } +>out.a.a.a.a : { a: {}; } +>out.a.a.a : { a: {}; } +>out.a.a : { a: {}; } +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } + let xhr: XMLHttpRequest; >xhr : XMLHttpRequest >XMLHttpRequest : XMLHttpRequest const out2 = foo(xhr); ->out2 : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } ->foo(xhr) : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo(xhr) : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } >foo : (deep: Deep) => T >xhr : XMLHttpRequest +out2.responseXML +>out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } + +out2.responseXML.activeElement.className.length +>out2.responseXML.activeElement.className.length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } +>out2.responseXML.activeElement.className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } +>out2.responseXML.activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } +>out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } +>className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } +>length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } + diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index 746ca0eb264..4a9ab16f9ea 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -672,8 +672,8 @@ p11.bar = p11.bar + 1; >1 : 1 let p12 = defineProps(p1, { ->p12 : Point & { foo: number; bar: number; } ->defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } +>defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: {}; bar: {}; } >defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U >p1 : Point >{ foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }} : { foo: { value: number; }; bar: { get(): number; set(value: number): void; }; } @@ -716,22 +716,22 @@ let p12 = defineProps(p1, { p12.foo = p12.foo + 1; >p12.foo = p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >foo : number >p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >foo : number >1 : 1 p12.bar = p12.bar + 1; >p12.bar = p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >bar : number >p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >bar : number >1 : 1 @@ -808,8 +808,8 @@ declare const Vue: new (options: VueOptions) => D & M & P; >P : P let vue = new Vue({ ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >Vue : new (options: VueOptions) => D & M & P >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } @@ -833,7 +833,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number } }, @@ -846,7 +846,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number }, @@ -870,27 +870,27 @@ let vue = new Vue({ }); vue; ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } vue.x; >vue.x : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number vue.f("abc"); >vue.f("abc") : number >vue.f : (x: string) => number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >f : (x: string) => number >"abc" : "abc" vue.test; >vue.test : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >test : number vue.hello; >vue.hello : string ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >hello : string diff --git a/tests/cases/compiler/mappedTypeRecursiveInference.ts b/tests/cases/compiler/mappedTypeRecursiveInference.ts index e264244095d..37b5b09d8a3 100644 --- a/tests/cases/compiler/mappedTypeRecursiveInference.ts +++ b/tests/cases/compiler/mappedTypeRecursiveInference.ts @@ -4,6 +4,11 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); +out.a +out.a.a +out.a.a.a.a.a.a.a let xhr: XMLHttpRequest; const out2 = foo(xhr); +out2.responseXML +out2.responseXML.activeElement.className.length From 35244230d5ac8cbf02eaa7063d8f9dd4e9d6ef1f Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 14:20:14 -0800 Subject: [PATCH 07/16] Add deferred mapped types This allows index signature inference to be inferred as well. --- src/compiler/checker.ts | 62 +++++++++++++++++++++++------------------ src/compiler/types.ts | 8 ++++++ 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6e6bb0fb9a4..9a95a3300ca 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6114,6 +6114,23 @@ namespace ts { } } + function resolveDeferredMappedTypeMembers(type: DeferredMappedType) { + const indexInfo = type.targetIndexInfo; + const readonlyMask = type.mappedType.declaration.readonlyToken ? false : true; + const optionalMask = type.mappedType.declaration.questionToken ? 0 : SymbolFlags.Optional; + const stringIndexInfo = indexInfo && createIndexInfo(inferDeferredMappedType(indexInfo.type, type.mappedType), readonlyMask && indexInfo.isReadonly); + const members = createSymbolTable(); + for (const prop of type.sourceProperties) { + const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; + inferredProp.declarations = prop.declarations; + inferredProp.propertyType = getTypeOfSymbol(prop); + inferredProp.mappedType = type.mappedType; + members.set(prop.escapedName, inferredProp); + } + setStructuredTypeMembers(type, members, emptyArray, emptyArray, stringIndexInfo, undefined); + } + /** Resolve the members of a mapped type { [P in K]: T } */ function resolveMappedTypeMembers(type: MappedType) { const members: SymbolTable = createSymbolTable(); @@ -6253,6 +6270,9 @@ namespace ts { else if ((type).objectFlags & ObjectFlags.ClassOrInterface) { resolveClassOrInterfaceMembers(type); } + else if ((type).objectFlags & ObjectFlags.Deferred) { + resolveDeferredMappedTypeMembers(type as DeferredMappedType); + } else if ((type).objectFlags & ObjectFlags.Anonymous) { resolveAnonymousTypeMembers(type); } @@ -11291,35 +11311,23 @@ namespace ts { } function createDeferredMappedType(source: Type, target: MappedType) { - const properties = getPropertiesOfType(source); - let indexInfo = getIndexInfoOfType(source, IndexKind.String); - if (properties.length === 0 && !indexInfo) { + const properties = getPropertiesOfType(source); + let indexInfo = getIndexInfoOfType(source, IndexKind.String); + if (properties.length === 0 && !indexInfo) { + return undefined; + } + // If any property contains context sensitive functions that have been skipped, the source type + // is incomplete and we can't infer a meaningful input type. + for (const prop of properties) { + if (getTypeOfSymbol(prop).flags & TypeFlags.ContainsAnyFunctionType) { return undefined; } - const readonlyMask = target.declaration.readonlyToken ? false : true; - const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; - const members = createSymbolTable(); - for (const prop of properties) { - const propType = getTypeOfSymbol(prop); - // If any property contains context sensitive functions that have been skipped, the source type - // is incomplete and we can't infer a meaningful input type. - if (propType.flags & TypeFlags.ContainsAnyFunctionType) { - return undefined; - } - const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); - const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; - inferredProp.declarations = prop.declarations; - inferredProp.propertyType = propType; - inferredProp.mappedType = target; - members.set(prop.escapedName, inferredProp); - } - if (indexInfo) { - // TODO: Defer this too. - // (probably the simplest way is to have a special type that defers the creation of (at least) its index info in - // resolveStructuredTypeMembers - indexInfo = createIndexInfo(inferDeferredMappedType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); - } - return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); + } + const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, undefined) as DeferredMappedType; + deferred.mappedType = target; + deferred.sourceProperties = properties; + deferred.targetIndexInfo = indexInfo; + return deferred; } function inferDeferredMappedType(sourceType: Type, target: MappedType): Type { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index b8ac1c67e8d..6c4b9c0658e 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3501,6 +3501,7 @@ namespace ts { EvolvingArray = 1 << 8, // Evolving array type ObjectLiteralPatternWithComputedProperties = 1 << 9, // Object literal pattern with computed properties ContainsSpread = 1 << 10, // Object literal contains spread operation + Deferred = 1 << 11, // Object contains a deferred inferred property ClassOrInterface = Class | Interface } @@ -3608,6 +3609,13 @@ namespace ts { finalArrayType?: Type; // Final array type of evolving array type } + /* @internal */ + export interface DeferredMappedType extends ObjectType { + targetIndexInfo?: IndexInfo; + mappedType: MappedType; + sourceProperties: Symbol[]; + } + /* @internal */ // Resolved object, union, or intersection type export interface ResolvedType extends ObjectType, UnionOrIntersectionType { From a43adad080158ac5fa8a5ff6aa43f74f4d1a6f8c Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 14:44:34 -0800 Subject: [PATCH 08/16] Simplify DeferredMappedType construction --- src/compiler/checker.ts | 10 ++++------ src/compiler/types.ts | 3 +-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9a95a3300ca..2e7f1f0186f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6115,12 +6115,12 @@ namespace ts { } function resolveDeferredMappedTypeMembers(type: DeferredMappedType) { - const indexInfo = type.targetIndexInfo; + const indexInfo = getIndexInfoOfType(type.source, IndexKind.String); const readonlyMask = type.mappedType.declaration.readonlyToken ? false : true; const optionalMask = type.mappedType.declaration.questionToken ? 0 : SymbolFlags.Optional; const stringIndexInfo = indexInfo && createIndexInfo(inferDeferredMappedType(indexInfo.type, type.mappedType), readonlyMask && indexInfo.isReadonly); const members = createSymbolTable(); - for (const prop of type.sourceProperties) { + for (const prop of getPropertiesOfType(type.source)) { const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; inferredProp.declarations = prop.declarations; @@ -11312,8 +11312,7 @@ namespace ts { function createDeferredMappedType(source: Type, target: MappedType) { const properties = getPropertiesOfType(source); - let indexInfo = getIndexInfoOfType(source, IndexKind.String); - if (properties.length === 0 && !indexInfo) { + if (properties.length === 0 && !getIndexInfoOfType(source, IndexKind.String)) { return undefined; } // If any property contains context sensitive functions that have been skipped, the source type @@ -11324,9 +11323,8 @@ namespace ts { } } const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, undefined) as DeferredMappedType; + deferred.source = source; deferred.mappedType = target; - deferred.sourceProperties = properties; - deferred.targetIndexInfo = indexInfo; return deferred; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 6c4b9c0658e..bd49ce9f90c 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3611,9 +3611,8 @@ namespace ts { /* @internal */ export interface DeferredMappedType extends ObjectType { - targetIndexInfo?: IndexInfo; + source: Type; mappedType: MappedType; - sourceProperties: Symbol[]; } /* @internal */ From 861617006046bbd9b687f584eb09b46124ec30a5 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 15:49:09 -0800 Subject: [PATCH 09/16] Fix printing of deferred mapped types A deferred mapped type with a source that has an index signature now prints {} as the type of the index signature. This avoids an infinite recursion. --- src/compiler/checker.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2e7f1f0186f..770a31e9435 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2860,8 +2860,11 @@ namespace ts { for (const signature of resolvedType.constructSignatures) { typeElements.push(signatureToSignatureDeclarationHelper(signature, SyntaxKind.ConstructSignature, context)); } - if (resolvedType.stringIndexInfo) { - typeElements.push(indexInfoToIndexSignatureDeclarationHelper(resolvedType.stringIndexInfo, IndexKind.String, context)); + if (resolvedType.stringIndexInfo && !(resolvedType.objectFlags & ObjectFlags.Deferred)) { + const indexInfo = resolvedType.objectFlags & ObjectFlags.Deferred ? + createIndexInfo(emptyObjectType, resolvedType.stringIndexInfo.isReadonly, resolvedType.stringIndexInfo.declaration) : + resolvedType.stringIndexInfo; + typeElements.push(indexInfoToIndexSignatureDeclarationHelper(indexInfo, IndexKind.String, context)); } if (resolvedType.numberIndexInfo) { typeElements.push(indexInfoToIndexSignatureDeclarationHelper(resolvedType.numberIndexInfo, IndexKind.Number, context)); From 81a601bb4963ed5495a33171f4b11e45c596f0a0 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 15:54:43 -0800 Subject: [PATCH 10/16] Test:deferred mapped types --- .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + .../isomorphicMappedTypeInference.types | 6 +-- .../reference/mappedTypeRecursiveInference.js | 12 ++++++ .../mappedTypeRecursiveInference.symbols | 34 ++++++++++++--- .../mappedTypeRecursiveInference.types | 43 +++++++++++++++++++ .../compiler/mappedTypeRecursiveInference.ts | 8 ++++ 7 files changed, 97 insertions(+), 8 deletions(-) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index ad34924a097..926e715aaf3 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2066,6 +2066,7 @@ declare namespace ts { EvolvingArray = 256, ObjectLiteralPatternWithComputedProperties = 512, ContainsSpread = 1024, + Deferred = 2048, ClassOrInterface = 3, } interface ObjectType extends Type { diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 4d06e48dc25..2709e0c5294 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2066,6 +2066,7 @@ declare namespace ts { EvolvingArray = 256, ObjectLiteralPatternWithComputedProperties = 512, ContainsSpread = 1024, + Deferred = 2048, ClassOrInterface = 3, } interface ObjectType extends Type { diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index a7e4011109a..23306d30313 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -391,15 +391,15 @@ function f6(s: string) { }); let v = unboxify(b); ->v : { [x: string]: string | number | boolean; } ->unboxify(b) : { [x: string]: string | number | boolean; } +>v : {} +>unboxify(b) : {} >unboxify : (obj: Boxified) => T >b : { [x: string]: Box | Box | Box; } let x: string | number | boolean = v[s]; >x : string | number | boolean >v[s] : string | number | boolean ->v : { [x: string]: string | number | boolean; } +>v : {} >s : string } diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.js b/tests/baselines/reference/mappedTypeRecursiveInference.js index c1b5bc6f7bf..914eb2f16b6 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.js +++ b/tests/baselines/reference/mappedTypeRecursiveInference.js @@ -8,6 +8,14 @@ out.a out.a.a out.a.a.a.a.a.a.a + +interface B { [s: string]: B } +declare let b: B; +const oub = foo(b); +oub.b +oub.b.b +oub.b.a.n.a.n.a + let xhr: XMLHttpRequest; const out2 = foo(xhr); out2.responseXML @@ -19,6 +27,10 @@ var out = foo(a); out.a; out.a.a; out.a.a.a.a.a.a.a; +var oub = foo(b); +oub.b; +oub.b.b; +oub.b.a.n.a.n.a; var xhr; var out2 = foo(xhr); out2.responseXML; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.symbols b/tests/baselines/reference/mappedTypeRecursiveInference.symbols index 089468d4aa8..59109f15f91 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference.symbols @@ -59,18 +59,42 @@ out.a.a.a.a.a.a.a >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + +interface B { [s: string]: B } +>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17)) +>s : Symbol(s, Decl(mappedTypeRecursiveInference.ts, 10, 15)) +>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17)) + +declare let b: B; +>b : Symbol(b, Decl(mappedTypeRecursiveInference.ts, 11, 11)) +>B : Symbol(B, Decl(mappedTypeRecursiveInference.ts, 7, 17)) + +const oub = foo(b); +>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5)) +>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) +>b : Symbol(b, Decl(mappedTypeRecursiveInference.ts, 11, 11)) + +oub.b +>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5)) + +oub.b.b +>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5)) + +oub.b.a.n.a.n.a +>oub : Symbol(oub, Decl(mappedTypeRecursiveInference.ts, 12, 5)) + let xhr: XMLHttpRequest; ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 17, 3)) >XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) const out2 = foo(xhr); ->out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5)) >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 17, 3)) out2.responseXML >out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) ->out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5)) >responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) out2.responseXML.activeElement.className.length @@ -78,7 +102,7 @@ out2.responseXML.activeElement.className.length >out2.responseXML.activeElement.className : Symbol(className, Decl(lib.dom.d.ts, --, --)) >out2.responseXML.activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) >out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) ->out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 18, 5)) >responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) >activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) >className : Symbol(className, Decl(lib.dom.d.ts, --, --)) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index eccb4ff65a1..ca2761ac964 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -60,6 +60,49 @@ out.a.a.a.a.a.a.a >a : { a: {}; } >a : { a: {}; } + +interface B { [s: string]: B } +>B : B +>s : string +>B : B + +declare let b: B; +>b : B +>B : B + +const oub = foo(b); +>oub : {} +>foo(b) : {} +>foo : (deep: Deep) => T +>b : B + +oub.b +>oub.b : {} +>oub : {} +>b : {} + +oub.b.b +>oub.b.b : {} +>oub.b : {} +>oub : {} +>b : {} +>b : {} + +oub.b.a.n.a.n.a +>oub.b.a.n.a.n.a : {} +>oub.b.a.n.a.n : {} +>oub.b.a.n.a : {} +>oub.b.a.n : {} +>oub.b.a : {} +>oub.b : {} +>oub : {} +>b : {} +>a : {} +>n : {} +>a : {} +>n : {} +>a : {} + let xhr: XMLHttpRequest; >xhr : XMLHttpRequest >XMLHttpRequest : XMLHttpRequest diff --git a/tests/cases/compiler/mappedTypeRecursiveInference.ts b/tests/cases/compiler/mappedTypeRecursiveInference.ts index 37b5b09d8a3..1b2e34837f6 100644 --- a/tests/cases/compiler/mappedTypeRecursiveInference.ts +++ b/tests/cases/compiler/mappedTypeRecursiveInference.ts @@ -8,6 +8,14 @@ out.a out.a.a out.a.a.a.a.a.a.a + +interface B { [s: string]: B } +declare let b: B; +const oub = foo(b); +oub.b +oub.b.b +oub.b.a.n.a.n.a + let xhr: XMLHttpRequest; const out2 = foo(xhr); out2.responseXML From 9aa5443bbc2587dba2b2ffeb7860c100659256e1 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 16:10:26 -0800 Subject: [PATCH 11/16] Fix printing of deferred mapped types' index signatures --- src/compiler/checker.ts | 2 +- .../isomorphicMappedTypeInference.types | 6 +-- .../mappedTypeRecursiveInference.types | 46 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 770a31e9435..93f3428ba73 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2860,7 +2860,7 @@ namespace ts { for (const signature of resolvedType.constructSignatures) { typeElements.push(signatureToSignatureDeclarationHelper(signature, SyntaxKind.ConstructSignature, context)); } - if (resolvedType.stringIndexInfo && !(resolvedType.objectFlags & ObjectFlags.Deferred)) { + if (resolvedType.stringIndexInfo) { const indexInfo = resolvedType.objectFlags & ObjectFlags.Deferred ? createIndexInfo(emptyObjectType, resolvedType.stringIndexInfo.isReadonly, resolvedType.stringIndexInfo.declaration) : resolvedType.stringIndexInfo; diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index 23306d30313..1a78dff0e78 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -391,15 +391,15 @@ function f6(s: string) { }); let v = unboxify(b); ->v : {} ->unboxify(b) : {} +>v : { [x: string]: {}; } +>unboxify(b) : { [x: string]: {}; } >unboxify : (obj: Boxified) => T >b : { [x: string]: Box | Box | Box; } let x: string | number | boolean = v[s]; >x : string | number | boolean >v[s] : string | number | boolean ->v : {} +>v : { [x: string]: {}; } >s : string } diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index ca2761ac964..c48dda05f31 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -71,37 +71,37 @@ declare let b: B; >B : B const oub = foo(b); ->oub : {} ->foo(b) : {} +>oub : { [x: string]: {}; } +>foo(b) : { [x: string]: {}; } >foo : (deep: Deep) => T >b : B oub.b ->oub.b : {} ->oub : {} ->b : {} +>oub.b : { [x: string]: {}; } +>oub : { [x: string]: {}; } +>b : { [x: string]: {}; } oub.b.b ->oub.b.b : {} ->oub.b : {} ->oub : {} ->b : {} ->b : {} +>oub.b.b : { [x: string]: {}; } +>oub.b : { [x: string]: {}; } +>oub : { [x: string]: {}; } +>b : { [x: string]: {}; } +>b : { [x: string]: {}; } oub.b.a.n.a.n.a ->oub.b.a.n.a.n.a : {} ->oub.b.a.n.a.n : {} ->oub.b.a.n.a : {} ->oub.b.a.n : {} ->oub.b.a : {} ->oub.b : {} ->oub : {} ->b : {} ->a : {} ->n : {} ->a : {} ->n : {} ->a : {} +>oub.b.a.n.a.n.a : { [x: string]: {}; } +>oub.b.a.n.a.n : { [x: string]: {}; } +>oub.b.a.n.a : { [x: string]: {}; } +>oub.b.a.n : { [x: string]: {}; } +>oub.b.a : { [x: string]: {}; } +>oub.b : { [x: string]: {}; } +>oub : { [x: string]: {}; } +>b : { [x: string]: {}; } +>a : { [x: string]: {}; } +>n : { [x: string]: {}; } +>a : { [x: string]: {}; } +>n : { [x: string]: {}; } +>a : { [x: string]: {}; } let xhr: XMLHttpRequest; >xhr : XMLHttpRequest From b9fb4cce8809cc746c12cfd5bbd75cfe6500ccfd Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 3 Jan 2018 16:26:23 -0800 Subject: [PATCH 12/16] Fix quickinfo display of deferred mapped types --- src/compiler/checker.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 93f3428ba73..bb30894d613 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3685,7 +3685,10 @@ namespace ts { writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } - buildIndexSignatureDisplay(resolved.stringIndexInfo, writer, IndexKind.String, enclosingDeclaration, globalFlags, symbolStack); + const stringIndexInfo = resolved.objectFlags & ObjectFlags.Deferred && resolved.stringIndexInfo ? + createIndexInfo(emptyObjectType, resolved.stringIndexInfo.isReadonly, resolved.stringIndexInfo.declaration) : + resolved.stringIndexInfo; + buildIndexSignatureDisplay(stringIndexInfo, writer, IndexKind.String, enclosingDeclaration, globalFlags, symbolStack); buildIndexSignatureDisplay(resolved.numberIndexInfo, writer, IndexKind.Number, enclosingDeclaration, globalFlags, symbolStack); for (const p of resolved.properties) { if (globalFlags & TypeFormatFlags.WriteClassExpressionAsTypeLiteral) { @@ -3696,7 +3699,7 @@ namespace ts { writer.reportPrivateInBaseOfClassExpression(symbolName(p)); } } - const t = getTypeOfSymbol(p); + const t = getCheckFlags(p) & CheckFlags.Deferred ? emptyObjectType : getTypeOfSymbol(p); if (p.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(t).length) { const signatures = getSignaturesOfType(t, SignatureKind.Call); for (const signature of signatures) { @@ -11325,7 +11328,7 @@ namespace ts { return undefined; } } - const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, undefined) as DeferredMappedType; + const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, /*symbol*/ undefined) as DeferredMappedType; deferred.source = source; deferred.mappedType = target; return deferred; From cc7710c71c715eb60864b89e80da217e93a10cfa Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 4 Jan 2018 10:55:41 -0800 Subject: [PATCH 13/16] Add fourslash tests and update missed baselines --- .../isomorphicMappedTypeInference.js | 12 +--- .../reference/keyofAndIndexedAccess.js | 2 +- .../reference/thisTypeInObjectLiterals2.js | 8 +-- ...letionEntryForDeferredMappedTypeMembers.ts | 17 ++++++ .../quickInfoMappedTypeRecursiveInference.ts | 56 +++++++++++++++++++ 5 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 tests/cases/fourslash/completionEntryForDeferredMappedTypeMembers.ts create mode 100644 tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.js b/tests/baselines/reference/isomorphicMappedTypeInference.js index 9c4e8c9e9f1..d749e71c534 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.js +++ b/tests/baselines/reference/isomorphicMappedTypeInference.js @@ -310,17 +310,11 @@ declare type Spec = { */ declare function applySpec(obj: Spec): (...args: any[]) => T; declare var g1: (...args: any[]) => { - sum: number; - nested: { - mul: string; - }; + sum: {}; + nested: {}; }; declare var g2: (...args: any[]) => { - foo: { - bar: { - baz: boolean; - }; - }; + foo: {}; }; declare const foo: (object: T, partial: Partial) => T; declare let o: { diff --git a/tests/baselines/reference/keyofAndIndexedAccess.js b/tests/baselines/reference/keyofAndIndexedAccess.js index 530a2b8bbf3..bd9e1a44bfe 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.js +++ b/tests/baselines/reference/keyofAndIndexedAccess.js @@ -1105,7 +1105,7 @@ declare var hashOfEmpty1: { test: {}; }; declare var hashOfEmpty2: { - test: boolean; + test: {}; }; interface Options1 { data?: Data; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.js b/tests/baselines/reference/thisTypeInObjectLiterals2.js index ca62ee37665..d614f0fa74c 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.js +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.js @@ -462,8 +462,8 @@ declare function defineProps(obj: T, descs: PropDescMap & ThisType): declare let p10: Point & Record<"foo", number>; declare let p11: Point & Record<"bar", number>; declare let p12: Point & { - foo: number; - bar: number; + foo: {}; + bar: {}; }; declare type Accessors = { [K in keyof T]: (() => T[K]) | Computed; @@ -487,6 +487,6 @@ declare let vue: { } & { f(x: string): number; } & { - test: number; - hello: string; + test: {}; + hello: {}; }; diff --git a/tests/cases/fourslash/completionEntryForDeferredMappedTypeMembers.ts b/tests/cases/fourslash/completionEntryForDeferredMappedTypeMembers.ts new file mode 100644 index 00000000000..785ac32ee39 --- /dev/null +++ b/tests/cases/fourslash/completionEntryForDeferredMappedTypeMembers.ts @@ -0,0 +1,17 @@ +/// +// @Filename: test.ts +//// interface A { a: A } +//// declare let a: A; +//// type Deep = { [K in keyof T]: Deep } +//// declare function foo(deep: Deep): T; +//// const out = foo(a); +//// out./*1*/a +//// out.a./*2*/a +//// out.a.a./*3*/a + +goTo.marker('1'); +verify.completionListCount(1); +goTo.marker('2'); +verify.completionListCount(1); +goTo.marker('3'); +verify.completionListCount(1); diff --git a/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts b/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts new file mode 100644 index 00000000000..84fd9da4ebe --- /dev/null +++ b/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts @@ -0,0 +1,56 @@ +/// +// @Filename: test.ts +//// interface A { a: A } +//// declare let a: A; +//// type Deep = { [K in keyof T]: Deep } +//// declare function foo(deep: Deep): T; +//// const out/*1*/ = foo/*2*/(a); +//// out.a/*3*/ +//// out.a.a/*4*/ +//// out.a.a.a.a.a.a.a/*5*/ +//// +//// interface B { [s: string]: B } +//// declare let b: B; +//// const oub/*6*/ = foo/*7*/(b); +//// oub.b/*8*/ +//// oub.b.b/*9*/ +//// oub.b.a.n.a.n.a/*10*/ + +verify.quickInfoAt('1', `const out: { + a: {}; +}`); +verify.quickInfoAt('2', `function foo<{ + a: {}; +}>(deep: Deep<{ + a: {}; +}>): { + a: {}; +}`); +verify.quickInfoAt('3', `(property) a: { + a: {}; +}`); +verify.quickInfoAt('4', `(property) a: { + a: {}; +}`); +verify.quickInfoAt('5', `(property) a: { + a: {}; +}`); +verify.quickInfoAt('6', `const oub: { + [x: string]: {}; +}`); +verify.quickInfoAt('7', `function foo<{ + [x: string]: {}; +}>(deep: Deep<{ + [x: string]: {}; +}>): { + [x: string]: {}; +}`); +verify.quickInfoAt('8', `{ + [x: string]: {}; +}`); +verify.quickInfoAt('9', `{ + [x: string]: {}; +}`); +verify.quickInfoAt('10', `{ + [x: string]: {}; +}`); From 5e7ce21a9e7fbcd4b395e42aa921966346b9e485 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 4 Jan 2018 12:34:01 -0800 Subject: [PATCH 14/16] Print inferred mapped property types as any not {} This makes them compatible in d.ts and slightly less misleading in services. --- src/compiler/checker.ts | 8 +- .../isomorphicMappedTypeInference.js | 6 +- .../isomorphicMappedTypeInference.types | 44 +++---- .../reference/keyofAndIndexedAccess.js | 4 +- .../reference/keyofAndIndexedAccess.types | 8 +- .../mappedTypeInferenceErrors.errors.txt | 12 +- .../mappedTypeRecursiveInference.types | 124 +++++++++--------- .../reference/thisTypeInObjectLiterals2.js | 8 +- .../reference/thisTypeInObjectLiterals2.types | 30 ++--- 9 files changed, 122 insertions(+), 122 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bb30894d613..d21b15249ba 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2862,7 +2862,7 @@ namespace ts { } if (resolvedType.stringIndexInfo) { const indexInfo = resolvedType.objectFlags & ObjectFlags.Deferred ? - createIndexInfo(emptyObjectType, resolvedType.stringIndexInfo.isReadonly, resolvedType.stringIndexInfo.declaration) : + createIndexInfo(anyType, resolvedType.stringIndexInfo.isReadonly, resolvedType.stringIndexInfo.declaration) : resolvedType.stringIndexInfo; typeElements.push(indexInfoToIndexSignatureDeclarationHelper(indexInfo, IndexKind.String, context)); } @@ -2876,7 +2876,7 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getCheckFlags(propertySymbol) & CheckFlags.Deferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.Deferred ? anyType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -3686,7 +3686,7 @@ namespace ts { writer.writeLine(); } const stringIndexInfo = resolved.objectFlags & ObjectFlags.Deferred && resolved.stringIndexInfo ? - createIndexInfo(emptyObjectType, resolved.stringIndexInfo.isReadonly, resolved.stringIndexInfo.declaration) : + createIndexInfo(anyType, resolved.stringIndexInfo.isReadonly, resolved.stringIndexInfo.declaration) : resolved.stringIndexInfo; buildIndexSignatureDisplay(stringIndexInfo, writer, IndexKind.String, enclosingDeclaration, globalFlags, symbolStack); buildIndexSignatureDisplay(resolved.numberIndexInfo, writer, IndexKind.Number, enclosingDeclaration, globalFlags, symbolStack); @@ -3699,7 +3699,7 @@ namespace ts { writer.reportPrivateInBaseOfClassExpression(symbolName(p)); } } - const t = getCheckFlags(p) & CheckFlags.Deferred ? emptyObjectType : getTypeOfSymbol(p); + const t = getCheckFlags(p) & CheckFlags.Deferred ? anyType : getTypeOfSymbol(p); if (p.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(t).length) { const signatures = getSignaturesOfType(t, SignatureKind.Call); for (const signature of signatures) { diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.js b/tests/baselines/reference/isomorphicMappedTypeInference.js index d749e71c534..aa000bc2913 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.js +++ b/tests/baselines/reference/isomorphicMappedTypeInference.js @@ -310,11 +310,11 @@ declare type Spec = { */ declare function applySpec(obj: Spec): (...args: any[]) => T; declare var g1: (...args: any[]) => { - sum: {}; - nested: {}; + sum: any; + nested: any; }; declare var g2: (...args: any[]) => { - foo: {}; + foo: any; }; declare const foo: (object: T, partial: Partial) => T; declare let o: { diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index 1a78dff0e78..abb1bca93fc 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -203,15 +203,15 @@ function f2() { }; let v = unboxify(b); ->v : { a: {}; b: {}; c: {}; } ->unboxify(b) : { a: {}; b: {}; c: {}; } +>v : { a: any; b: any; c: any; } +>unboxify(b) : { a: any; b: any; c: any; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } let x: number = v.a; >x : number >v.a : number ->v : { a: {}; b: {}; c: {}; } +>v : { a: any; b: any; c: any; } >a : number } @@ -277,11 +277,11 @@ function f4() { }; b = boxify(unboxify(b)); ->b = boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> +>b = boxify(unboxify(b)) : Boxified<{ a: any; b: any; c: any; }> >b : { a: Box; b: Box; c: Box; } ->boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> +>boxify(unboxify(b)) : Boxified<{ a: any; b: any; c: any; }> >boxify : (obj: T) => Boxified ->unboxify(b) : { a: {}; b: {}; c: {}; } +>unboxify(b) : { a: any; b: any; c: any; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } @@ -338,15 +338,15 @@ function f5(s: string) { }); let v = unboxify(b); ->v : { a: {}; b: {}; c: {}; } ->unboxify(b) : { a: {}; b: {}; c: {}; } +>v : { a: any; b: any; c: any; } +>unboxify(b) : { a: any; b: any; c: any; } >unboxify : (obj: Boxified) => T >b : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } let x: string | number | boolean = v.a; >x : string | number | boolean >v.a : string | number | boolean ->v : { a: {}; b: {}; c: {}; } +>v : { a: any; b: any; c: any; } >a : string | number | boolean } @@ -391,15 +391,15 @@ function f6(s: string) { }); let v = unboxify(b); ->v : { [x: string]: {}; } ->unboxify(b) : { [x: string]: {}; } +>v : { [x: string]: any; } +>unboxify(b) : { [x: string]: any; } >unboxify : (obj: Boxified) => T >b : { [x: string]: Box | Box | Box; } let x: string | number | boolean = v[s]; >x : string | number | boolean >v[s] : string | number | boolean ->v : { [x: string]: {}; } +>v : { [x: string]: any; } >s : string } @@ -449,20 +449,20 @@ function f10(foo: Foo) { >Foo : Foo let x = validate(foo); // { a: number, readonly b: string } ->x : { a: {}; readonly b: {}; } ->validate(foo) : { a: {}; readonly b: {}; } +>x : { a: any; readonly b: any; } +>validate(foo) : { a: any; readonly b: any; } >validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo let y = clone(foo); // { a?: number, b: string } ->y : { a?: {}; b: {}; } ->clone(foo) : { a?: {}; b: {}; } +>y : { a?: any; b: any; } +>clone(foo) : { a?: any; b: any; } >clone : (obj: { readonly [P in keyof T]: T[P]; }) => T >foo : Foo let z = validateAndClone(foo); // { a: number, b: string } ->z : { a: {}; b: {}; } ->validateAndClone(foo) : { a: {}; b: {}; } +>z : { a: any; b: any; } +>validateAndClone(foo) : { a: any; b: any; } >validateAndClone : (obj: { readonly [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo } @@ -507,8 +507,8 @@ declare function applySpec(obj: Spec): (...args: any[]) => T; // Infers g1: (...args: any[]) => { sum: number, nested: { mul: string } } var g1 = applySpec({ ->g1 : (...args: any[]) => { sum: {}; nested: {}; } ->applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: {}; nested: {}; } +>g1 : (...args: any[]) => { sum: any; nested: any; } +>applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: any; nested: any; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }} : { sum: (a: any) => number; nested: { mul: (b: any) => string; }; } @@ -532,8 +532,8 @@ var g1 = applySpec({ // Infers g2: (...args: any[]) => { foo: { bar: { baz: boolean } } } var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); ->g2 : (...args: any[]) => { foo: {}; } ->applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: {}; } +>g2 : (...args: any[]) => { foo: any; } +>applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: any; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ foo: { bar: { baz: (x: any) => true } } } : { foo: { bar: { baz: (x: any) => boolean; }; }; } >foo : { bar: { baz: (x: any) => boolean; }; } diff --git a/tests/baselines/reference/keyofAndIndexedAccess.js b/tests/baselines/reference/keyofAndIndexedAccess.js index bd9e1a44bfe..8ea17554b35 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.js +++ b/tests/baselines/reference/keyofAndIndexedAccess.js @@ -1102,10 +1102,10 @@ declare type Handlers = { }; declare function on(handlerHash: Handlers): T; declare var hashOfEmpty1: { - test: {}; + test: any; }; declare var hashOfEmpty2: { - test: {}; + test: any; }; interface Options1 { data?: Data; diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index 9e09c2a3c35..0e7da19c3e2 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1793,16 +1793,16 @@ declare function on(handlerHash: Handlers): T >T : T var hashOfEmpty1 = on({ test: () => {} }); // {} ->hashOfEmpty1 : { test: {}; } ->on({ test: () => {} }) : { test: {}; } +>hashOfEmpty1 : { test: any; } +>on({ test: () => {} }) : { test: any; } >on : (handlerHash: Handlers) => T >{ test: () => {} } : { test: () => void; } >test : () => void >() => {} : () => void var hashOfEmpty2 = on({ test: (x: boolean) => {} }); // { test: boolean } ->hashOfEmpty2 : { test: {}; } ->on({ test: (x: boolean) => {} }) : { test: {}; } +>hashOfEmpty2 : { test: any; } +>on({ test: (x: boolean) => {} }) : { test: any; } >on : (handlerHash: Handlers) => T >{ test: (x: boolean) => {} } : { test: (x: boolean) => void; } >test : (x: boolean) => void diff --git a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt index 2293fd6bfd5..9b7efb94850 100644 --- a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt +++ b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. - Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. +tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: any; baz: any; }>; } & ThisType<{ x: number; y: number; } & { bar: any; baz: any; }>'. + Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: any; baz: any; }>; }'. Types of property 'computed' are incompatible. - Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. + Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: any; baz: any; }>'. Types of property 'baz' are incompatible. Type 'number' is not assignable to type '() => {}'. @@ -35,10 +35,10 @@ tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS ~~~~~ }); ~ -!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. -!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. +!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: any; baz: any; }>; } & ThisType<{ x: number; y: number; } & { bar: any; baz: any; }>'. +!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: any; baz: any; }>; }'. !!! error TS2345: Types of property 'computed' are incompatible. -!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. +!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: any; baz: any; }>'. !!! error TS2345: Types of property 'baz' are incompatible. !!! error TS2345: Type 'number' is not assignable to type '() => {}'. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index c48dda05f31..04995464f67 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -26,39 +26,39 @@ declare function foo(deep: Deep): T; >T : T const out = foo(a); ->out : { a: {}; } ->foo(a) : { a: {}; } +>out : { a: any; } +>foo(a) : { a: any; } >foo : (deep: Deep) => T >a : A out.a ->out.a : { a: {}; } ->out : { a: {}; } ->a : { a: {}; } +>out.a : { a: any; } +>out : { a: any; } +>a : { a: any; } out.a.a ->out.a.a : { a: {}; } ->out.a : { a: {}; } ->out : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } +>out.a.a : { a: any; } +>out.a : { a: any; } +>out : { a: any; } +>a : { a: any; } +>a : { a: any; } out.a.a.a.a.a.a.a ->out.a.a.a.a.a.a.a : { a: {}; } ->out.a.a.a.a.a.a : { a: {}; } ->out.a.a.a.a.a : { a: {}; } ->out.a.a.a.a : { a: {}; } ->out.a.a.a : { a: {}; } ->out.a.a : { a: {}; } ->out.a : { a: {}; } ->out : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } ->a : { a: {}; } +>out.a.a.a.a.a.a.a : { a: any; } +>out.a.a.a.a.a.a : { a: any; } +>out.a.a.a.a.a : { a: any; } +>out.a.a.a.a : { a: any; } +>out.a.a.a : { a: any; } +>out.a.a : { a: any; } +>out.a : { a: any; } +>out : { a: any; } +>a : { a: any; } +>a : { a: any; } +>a : { a: any; } +>a : { a: any; } +>a : { a: any; } +>a : { a: any; } +>a : { a: any; } interface B { [s: string]: B } @@ -71,61 +71,61 @@ declare let b: B; >B : B const oub = foo(b); ->oub : { [x: string]: {}; } ->foo(b) : { [x: string]: {}; } +>oub : { [x: string]: any; } +>foo(b) : { [x: string]: any; } >foo : (deep: Deep) => T >b : B oub.b ->oub.b : { [x: string]: {}; } ->oub : { [x: string]: {}; } ->b : { [x: string]: {}; } +>oub.b : { [x: string]: any; } +>oub : { [x: string]: any; } +>b : { [x: string]: any; } oub.b.b ->oub.b.b : { [x: string]: {}; } ->oub.b : { [x: string]: {}; } ->oub : { [x: string]: {}; } ->b : { [x: string]: {}; } ->b : { [x: string]: {}; } +>oub.b.b : { [x: string]: any; } +>oub.b : { [x: string]: any; } +>oub : { [x: string]: any; } +>b : { [x: string]: any; } +>b : { [x: string]: any; } oub.b.a.n.a.n.a ->oub.b.a.n.a.n.a : { [x: string]: {}; } ->oub.b.a.n.a.n : { [x: string]: {}; } ->oub.b.a.n.a : { [x: string]: {}; } ->oub.b.a.n : { [x: string]: {}; } ->oub.b.a : { [x: string]: {}; } ->oub.b : { [x: string]: {}; } ->oub : { [x: string]: {}; } ->b : { [x: string]: {}; } ->a : { [x: string]: {}; } ->n : { [x: string]: {}; } ->a : { [x: string]: {}; } ->n : { [x: string]: {}; } ->a : { [x: string]: {}; } +>oub.b.a.n.a.n.a : { [x: string]: any; } +>oub.b.a.n.a.n : { [x: string]: any; } +>oub.b.a.n.a : { [x: string]: any; } +>oub.b.a.n : { [x: string]: any; } +>oub.b.a : { [x: string]: any; } +>oub.b : { [x: string]: any; } +>oub : { [x: string]: any; } +>b : { [x: string]: any; } +>a : { [x: string]: any; } +>n : { [x: string]: any; } +>a : { [x: string]: any; } +>n : { [x: string]: any; } +>a : { [x: string]: any; } let xhr: XMLHttpRequest; >xhr : XMLHttpRequest >XMLHttpRequest : XMLHttpRequest const out2 = foo(xhr); ->out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } ->foo(xhr) : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>out2 : { onreadystatechange: any; readonly readyState: any; readonly response: any; readonly responseText: any; responseType: any; readonly responseURL: any; readonly responseXML: any; readonly status: any; readonly statusText: any; timeout: any; readonly upload: any; withCredentials: any; msCaching?: any; abort: any; getAllResponseHeaders: any; getResponseHeader: any; msCachingEnabled: any; open: any; overrideMimeType: any; send: any; setRequestHeader: any; readonly DONE: any; readonly HEADERS_RECEIVED: any; readonly LOADING: any; readonly OPENED: any; readonly UNSENT: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; onabort: any; onerror: any; onload: any; onloadend: any; onloadstart: any; onprogress: any; ontimeout: any; } +>foo(xhr) : { onreadystatechange: any; readonly readyState: any; readonly response: any; readonly responseText: any; responseType: any; readonly responseURL: any; readonly responseXML: any; readonly status: any; readonly statusText: any; timeout: any; readonly upload: any; withCredentials: any; msCaching?: any; abort: any; getAllResponseHeaders: any; getResponseHeader: any; msCachingEnabled: any; open: any; overrideMimeType: any; send: any; setRequestHeader: any; readonly DONE: any; readonly HEADERS_RECEIVED: any; readonly LOADING: any; readonly OPENED: any; readonly UNSENT: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; onabort: any; onerror: any; onload: any; onloadend: any; onloadstart: any; onprogress: any; ontimeout: any; } >foo : (deep: Deep) => T >xhr : XMLHttpRequest out2.responseXML ->out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } ->out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } ->responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>out2.responseXML : { readonly activeElement: any; alinkColor: any; readonly all: any; anchors: any; applets: any; bgColor: any; body: any; readonly characterSet: any; charset: any; readonly compatMode: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; documentElement: any; domain: any; embeds: any; fgColor: any; forms: any; readonly fullscreenElement: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; links: any; readonly location: any; msCapsLockWarningOff: any; msCSSOMElementFloatMetrics: any; onabort: any; onactivate: any; onbeforeactivate: any; onbeforedeactivate: any; onblur: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; oncontextmenu: any; ondblclick: any; ondeactivate: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onfullscreenchange: any; onfullscreenerror: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onmousedown: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onmousewheel: any; onmscontentzoom: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsinertiastart: any; onmsmanipulationstatechanged: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; onmssitemodejumplistitemremoved: any; onmsthumbnailclick: any; onpause: any; onplay: any; onplaying: any; onpointerlockchange: any; onpointerlockerror: any; onprogress: any; onratechange: any; onreadystatechange: any; onreset: any; onscroll: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onstalled: any; onstop: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onvolumechange: any; onwaiting: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; plugins: any; readonly pointerLockElement: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; scripts: any; readonly scrollingElement: any; readonly styleSheets: any; title: any; readonly URL: any; readonly URLUnencoded: any; readonly visibilityState: any; vlinkColor: any; readonly webkitCurrentFullScreenElement: any; readonly webkitFullscreenElement: any; readonly webkitFullscreenEnabled: any; readonly webkitIsFullScreen: any; readonly xmlEncoding: any; xmlStandalone: any; xmlVersion: any; adoptNode: any; captureEvents: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createExpression: any; createNodeIterator: any; createNSResolver: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTouch: any; createTouchList: any; createTreeWalker: any; elementFromPoint: any; evaluate: any; execCommand: any; execCommandShowHelp: any; exitFullscreen: any; exitPointerLock: any; focus: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; importNode: any; msElementsFromPoint: any; msElementsFromRect: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandText: any; queryCommandValue: any; releaseEvents: any; updateSettings: any; webkitCancelFullScreen: any; webkitExitFullscreen: any; write: any; writeln: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; querySelector: any; querySelectorAll: any; createEvent: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly childElementCount: any; readonly stylesheets: any; elementsFromPoint: any; } +>out2 : { onreadystatechange: any; readonly readyState: any; readonly response: any; readonly responseText: any; responseType: any; readonly responseURL: any; readonly responseXML: any; readonly status: any; readonly statusText: any; timeout: any; readonly upload: any; withCredentials: any; msCaching?: any; abort: any; getAllResponseHeaders: any; getResponseHeader: any; msCachingEnabled: any; open: any; overrideMimeType: any; send: any; setRequestHeader: any; readonly DONE: any; readonly HEADERS_RECEIVED: any; readonly LOADING: any; readonly OPENED: any; readonly UNSENT: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; onabort: any; onerror: any; onload: any; onloadend: any; onloadstart: any; onprogress: any; ontimeout: any; } +>responseXML : { readonly activeElement: any; alinkColor: any; readonly all: any; anchors: any; applets: any; bgColor: any; body: any; readonly characterSet: any; charset: any; readonly compatMode: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; documentElement: any; domain: any; embeds: any; fgColor: any; forms: any; readonly fullscreenElement: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; links: any; readonly location: any; msCapsLockWarningOff: any; msCSSOMElementFloatMetrics: any; onabort: any; onactivate: any; onbeforeactivate: any; onbeforedeactivate: any; onblur: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; oncontextmenu: any; ondblclick: any; ondeactivate: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onfullscreenchange: any; onfullscreenerror: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onmousedown: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onmousewheel: any; onmscontentzoom: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsinertiastart: any; onmsmanipulationstatechanged: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; onmssitemodejumplistitemremoved: any; onmsthumbnailclick: any; onpause: any; onplay: any; onplaying: any; onpointerlockchange: any; onpointerlockerror: any; onprogress: any; onratechange: any; onreadystatechange: any; onreset: any; onscroll: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onstalled: any; onstop: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onvolumechange: any; onwaiting: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; plugins: any; readonly pointerLockElement: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; scripts: any; readonly scrollingElement: any; readonly styleSheets: any; title: any; readonly URL: any; readonly URLUnencoded: any; readonly visibilityState: any; vlinkColor: any; readonly webkitCurrentFullScreenElement: any; readonly webkitFullscreenElement: any; readonly webkitFullscreenEnabled: any; readonly webkitIsFullScreen: any; readonly xmlEncoding: any; xmlStandalone: any; xmlVersion: any; adoptNode: any; captureEvents: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createExpression: any; createNodeIterator: any; createNSResolver: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTouch: any; createTouchList: any; createTreeWalker: any; elementFromPoint: any; evaluate: any; execCommand: any; execCommandShowHelp: any; exitFullscreen: any; exitPointerLock: any; focus: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; importNode: any; msElementsFromPoint: any; msElementsFromRect: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandText: any; queryCommandValue: any; releaseEvents: any; updateSettings: any; webkitCancelFullScreen: any; webkitExitFullscreen: any; write: any; writeln: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; querySelector: any; querySelectorAll: any; createEvent: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly childElementCount: any; readonly stylesheets: any; elementsFromPoint: any; } out2.responseXML.activeElement.className.length ->out2.responseXML.activeElement.className.length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } ->out2.responseXML.activeElement.className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } ->out2.responseXML.activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } ->out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } ->out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } ->responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } ->activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } ->className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } ->length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } +>out2.responseXML.activeElement.className.length : { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; } +>out2.responseXML.activeElement.className : { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; [Symbol.iterator]: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; } +>out2.responseXML.activeElement : { readonly classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; id: any; innerHTML: any; msContentZoomFactor: any; readonly msRegionOverflow: any; onariarequest: any; oncommand: any; ongotpointercapture: any; onlostpointercapture: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsgotpointercapture: any; onmsinertiastart: any; onmslostpointercapture: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; outerHTML: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly tagName: any; readonly assignedSlot: any; slot: any; readonly shadowRoot: any; getAttribute: any; getAttributeNode: any; getAttributeNodeNS: any; getAttributeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByTagName: any; getElementsByTagNameNS: any; hasAttribute: any; hasAttributeNS: any; msGetRegionContent: any; msGetUntransformedBounds: any; msMatchesSelector: any; msReleasePointerCapture: any; msSetPointerCapture: any; msZoomTo: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNode: any; removeAttributeNS: any; requestFullscreen: any; requestPointerLock: any; setAttribute: any; setAttributeNode: any; setAttributeNodeNS: any; setAttributeNS: any; setPointerCapture: any; webkitMatchesSelector: any; webkitRequestFullscreen: any; webkitRequestFullScreen: any; getElementsByClassName: any; matches: any; closest: any; scrollIntoView: any; scroll: any; scrollTo: any; scrollBy: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; attachShadow: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; readonly childElementCount: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly nextElementSibling: any; readonly previousElementSibling: any; querySelector: any; querySelectorAll: any; remove: any; readonly children: any; } +>out2.responseXML : { readonly activeElement: any; alinkColor: any; readonly all: any; anchors: any; applets: any; bgColor: any; body: any; readonly characterSet: any; charset: any; readonly compatMode: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; documentElement: any; domain: any; embeds: any; fgColor: any; forms: any; readonly fullscreenElement: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; links: any; readonly location: any; msCapsLockWarningOff: any; msCSSOMElementFloatMetrics: any; onabort: any; onactivate: any; onbeforeactivate: any; onbeforedeactivate: any; onblur: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; oncontextmenu: any; ondblclick: any; ondeactivate: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onfullscreenchange: any; onfullscreenerror: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onmousedown: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onmousewheel: any; onmscontentzoom: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsinertiastart: any; onmsmanipulationstatechanged: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; onmssitemodejumplistitemremoved: any; onmsthumbnailclick: any; onpause: any; onplay: any; onplaying: any; onpointerlockchange: any; onpointerlockerror: any; onprogress: any; onratechange: any; onreadystatechange: any; onreset: any; onscroll: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onstalled: any; onstop: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onvolumechange: any; onwaiting: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; plugins: any; readonly pointerLockElement: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; scripts: any; readonly scrollingElement: any; readonly styleSheets: any; title: any; readonly URL: any; readonly URLUnencoded: any; readonly visibilityState: any; vlinkColor: any; readonly webkitCurrentFullScreenElement: any; readonly webkitFullscreenElement: any; readonly webkitFullscreenEnabled: any; readonly webkitIsFullScreen: any; readonly xmlEncoding: any; xmlStandalone: any; xmlVersion: any; adoptNode: any; captureEvents: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createExpression: any; createNodeIterator: any; createNSResolver: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTouch: any; createTouchList: any; createTreeWalker: any; elementFromPoint: any; evaluate: any; execCommand: any; execCommandShowHelp: any; exitFullscreen: any; exitPointerLock: any; focus: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; importNode: any; msElementsFromPoint: any; msElementsFromRect: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandText: any; queryCommandValue: any; releaseEvents: any; updateSettings: any; webkitCancelFullScreen: any; webkitExitFullscreen: any; write: any; writeln: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; querySelector: any; querySelectorAll: any; createEvent: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly childElementCount: any; readonly stylesheets: any; elementsFromPoint: any; } +>out2 : { onreadystatechange: any; readonly readyState: any; readonly response: any; readonly responseText: any; responseType: any; readonly responseURL: any; readonly responseXML: any; readonly status: any; readonly statusText: any; timeout: any; readonly upload: any; withCredentials: any; msCaching?: any; abort: any; getAllResponseHeaders: any; getResponseHeader: any; msCachingEnabled: any; open: any; overrideMimeType: any; send: any; setRequestHeader: any; readonly DONE: any; readonly HEADERS_RECEIVED: any; readonly LOADING: any; readonly OPENED: any; readonly UNSENT: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; onabort: any; onerror: any; onload: any; onloadend: any; onloadstart: any; onprogress: any; ontimeout: any; } +>responseXML : { readonly activeElement: any; alinkColor: any; readonly all: any; anchors: any; applets: any; bgColor: any; body: any; readonly characterSet: any; charset: any; readonly compatMode: any; cookie: any; readonly currentScript: any; readonly defaultView: any; designMode: any; dir: any; readonly doctype: any; documentElement: any; domain: any; embeds: any; fgColor: any; forms: any; readonly fullscreenElement: any; readonly fullscreenEnabled: any; readonly head: any; readonly hidden: any; images: any; readonly implementation: any; readonly inputEncoding: any; readonly lastModified: any; linkColor: any; links: any; readonly location: any; msCapsLockWarningOff: any; msCSSOMElementFloatMetrics: any; onabort: any; onactivate: any; onbeforeactivate: any; onbeforedeactivate: any; onblur: any; oncanplay: any; oncanplaythrough: any; onchange: any; onclick: any; oncontextmenu: any; ondblclick: any; ondeactivate: any; ondrag: any; ondragend: any; ondragenter: any; ondragleave: any; ondragover: any; ondragstart: any; ondrop: any; ondurationchange: any; onemptied: any; onended: any; onerror: any; onfocus: any; onfullscreenchange: any; onfullscreenerror: any; oninput: any; oninvalid: any; onkeydown: any; onkeypress: any; onkeyup: any; onload: any; onloadeddata: any; onloadedmetadata: any; onloadstart: any; onmousedown: any; onmousemove: any; onmouseout: any; onmouseover: any; onmouseup: any; onmousewheel: any; onmscontentzoom: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsinertiastart: any; onmsmanipulationstatechanged: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; onmssitemodejumplistitemremoved: any; onmsthumbnailclick: any; onpause: any; onplay: any; onplaying: any; onpointerlockchange: any; onpointerlockerror: any; onprogress: any; onratechange: any; onreadystatechange: any; onreset: any; onscroll: any; onseeked: any; onseeking: any; onselect: any; onselectionchange: any; onselectstart: any; onstalled: any; onstop: any; onsubmit: any; onsuspend: any; ontimeupdate: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onvolumechange: any; onwaiting: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; plugins: any; readonly pointerLockElement: any; readonly readyState: any; readonly referrer: any; readonly rootElement: any; scripts: any; readonly scrollingElement: any; readonly styleSheets: any; title: any; readonly URL: any; readonly URLUnencoded: any; readonly visibilityState: any; vlinkColor: any; readonly webkitCurrentFullScreenElement: any; readonly webkitFullscreenElement: any; readonly webkitFullscreenEnabled: any; readonly webkitIsFullScreen: any; readonly xmlEncoding: any; xmlStandalone: any; xmlVersion: any; adoptNode: any; captureEvents: any; caretRangeFromPoint: any; clear: any; close: any; createAttribute: any; createAttributeNS: any; createCDATASection: any; createComment: any; createDocumentFragment: any; createElement: any; createElementNS: any; createExpression: any; createNodeIterator: any; createNSResolver: any; createProcessingInstruction: any; createRange: any; createTextNode: any; createTouch: any; createTouchList: any; createTreeWalker: any; elementFromPoint: any; evaluate: any; execCommand: any; execCommandShowHelp: any; exitFullscreen: any; exitPointerLock: any; focus: any; getElementById: any; getElementsByClassName: any; getElementsByName: any; getElementsByTagName: any; getElementsByTagNameNS: any; getSelection: any; hasFocus: any; importNode: any; msElementsFromPoint: any; msElementsFromRect: any; open: any; queryCommandEnabled: any; queryCommandIndeterm: any; queryCommandState: any; queryCommandSupported: any; queryCommandText: any; queryCommandValue: any; releaseEvents: any; updateSettings: any; webkitCancelFullScreen: any; webkitExitFullscreen: any; write: any; writeln: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; querySelector: any; querySelectorAll: any; createEvent: any; readonly children: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly childElementCount: any; readonly stylesheets: any; elementsFromPoint: any; } +>activeElement : { readonly classList: any; className: any; readonly clientHeight: any; readonly clientLeft: any; readonly clientTop: any; readonly clientWidth: any; id: any; innerHTML: any; msContentZoomFactor: any; readonly msRegionOverflow: any; onariarequest: any; oncommand: any; ongotpointercapture: any; onlostpointercapture: any; onmsgesturechange: any; onmsgesturedoubletap: any; onmsgestureend: any; onmsgesturehold: any; onmsgesturestart: any; onmsgesturetap: any; onmsgotpointercapture: any; onmsinertiastart: any; onmslostpointercapture: any; onmspointercancel: any; onmspointerdown: any; onmspointerenter: any; onmspointerleave: any; onmspointermove: any; onmspointerout: any; onmspointerover: any; onmspointerup: any; ontouchcancel: any; ontouchend: any; ontouchmove: any; ontouchstart: any; onwebkitfullscreenchange: any; onwebkitfullscreenerror: any; outerHTML: any; readonly prefix: any; readonly scrollHeight: any; scrollLeft: any; scrollTop: any; readonly scrollWidth: any; readonly tagName: any; readonly assignedSlot: any; slot: any; readonly shadowRoot: any; getAttribute: any; getAttributeNode: any; getAttributeNodeNS: any; getAttributeNS: any; getBoundingClientRect: any; getClientRects: any; getElementsByTagName: any; getElementsByTagNameNS: any; hasAttribute: any; hasAttributeNS: any; msGetRegionContent: any; msGetUntransformedBounds: any; msMatchesSelector: any; msReleasePointerCapture: any; msSetPointerCapture: any; msZoomTo: any; releasePointerCapture: any; removeAttribute: any; removeAttributeNode: any; removeAttributeNS: any; requestFullscreen: any; requestPointerLock: any; setAttribute: any; setAttributeNode: any; setAttributeNodeNS: any; setAttributeNS: any; setPointerCapture: any; webkitMatchesSelector: any; webkitRequestFullscreen: any; webkitRequestFullScreen: any; getElementsByClassName: any; matches: any; closest: any; scrollIntoView: any; scroll: any; scrollTo: any; scrollBy: any; insertAdjacentElement: any; insertAdjacentHTML: any; insertAdjacentText: any; attachShadow: any; addEventListener: any; removeEventListener: any; readonly attributes: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly lastChild: any; readonly localName: any; readonly namespaceURI: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly ownerDocument: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; hasAttributes: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ATTRIBUTE_NODE: any; readonly CDATA_SECTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_TYPE_NODE: any; readonly ELEMENT_NODE: any; readonly ENTITY_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly NOTATION_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly TEXT_NODE: any; dispatchEvent: any; onpointercancel: any; onpointerdown: any; onpointerenter: any; onpointerleave: any; onpointermove: any; onpointerout: any; onpointerover: any; onpointerup: any; onwheel: any; readonly childElementCount: any; readonly firstElementChild: any; readonly lastElementChild: any; readonly nextElementSibling: any; readonly previousElementSibling: any; querySelector: any; querySelectorAll: any; remove: any; readonly children: any; } +>className : { toString: any; charAt: any; charCodeAt: any; concat: any; indexOf: any; lastIndexOf: any; localeCompare: any; match: any; replace: any; search: any; slice: any; split: any; substring: any; toLowerCase: any; toLocaleLowerCase: any; toUpperCase: any; toLocaleUpperCase: any; trim: any; readonly length: any; substr: any; valueOf: any; [Symbol.iterator]: any; codePointAt: any; includes: any; endsWith: any; normalize: any; repeat: any; startsWith: any; anchor: any; big: any; blink: any; bold: any; fixed: any; fontcolor: any; fontsize: any; italics: any; link: any; small: any; strike: any; sub: any; sup: any; } +>length : { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; } diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.js b/tests/baselines/reference/thisTypeInObjectLiterals2.js index d614f0fa74c..7c5b6ef110b 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.js +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.js @@ -462,8 +462,8 @@ declare function defineProps(obj: T, descs: PropDescMap & ThisType): declare let p10: Point & Record<"foo", number>; declare let p11: Point & Record<"bar", number>; declare let p12: Point & { - foo: {}; - bar: {}; + foo: any; + bar: any; }; declare type Accessors = { [K in keyof T]: (() => T[K]) | Computed; @@ -487,6 +487,6 @@ declare let vue: { } & { f(x: string): number; } & { - test: {}; - hello: {}; + test: any; + hello: any; }; diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index 4a9ab16f9ea..fe00bdbb271 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -672,8 +672,8 @@ p11.bar = p11.bar + 1; >1 : 1 let p12 = defineProps(p1, { ->p12 : Point & { foo: {}; bar: {}; } ->defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: {}; bar: {}; } +>p12 : Point & { foo: any; bar: any; } +>defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: any; bar: any; } >defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U >p1 : Point >{ foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }} : { foo: { value: number; }; bar: { get(): number; set(value: number): void; }; } @@ -716,22 +716,22 @@ let p12 = defineProps(p1, { p12.foo = p12.foo + 1; >p12.foo = p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: {}; bar: {}; } +>p12 : Point & { foo: any; bar: any; } >foo : number >p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: {}; bar: {}; } +>p12 : Point & { foo: any; bar: any; } >foo : number >1 : 1 p12.bar = p12.bar + 1; >p12.bar = p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: {}; bar: {}; } +>p12 : Point & { foo: any; bar: any; } >bar : number >p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: {}; bar: {}; } +>p12 : Point & { foo: any; bar: any; } >bar : number >1 : 1 @@ -808,8 +808,8 @@ declare const Vue: new (options: VueOptions) => D & M & P; >P : P let vue = new Vue({ ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } ->new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } +>new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >Vue : new (options: VueOptions) => D & M & P >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } @@ -833,7 +833,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >x : number } }, @@ -846,7 +846,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >x : number }, @@ -870,27 +870,27 @@ let vue = new Vue({ }); vue; ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } vue.x; >vue.x : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >x : number vue.f("abc"); >vue.f("abc") : number >vue.f : (x: string) => number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >f : (x: string) => number >"abc" : "abc" vue.test; >vue.test : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >test : number vue.hello; >vue.hello : string ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: any; hello: any; } >hello : string From 0834732cd11cd9b0566812082ab87041b041067f Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 4 Jan 2018 12:53:03 -0800 Subject: [PATCH 15/16] Update fourslash baselines too --- .../quickInfoMappedTypeRecursiveInference.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts b/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts index 84fd9da4ebe..1b46eba1f6b 100644 --- a/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts +++ b/tests/cases/fourslash/quickInfoMappedTypeRecursiveInference.ts @@ -17,40 +17,40 @@ //// oub.b.a.n.a.n.a/*10*/ verify.quickInfoAt('1', `const out: { - a: {}; + a: any; }`); verify.quickInfoAt('2', `function foo<{ - a: {}; + a: any; }>(deep: Deep<{ - a: {}; + a: any; }>): { - a: {}; + a: any; }`); verify.quickInfoAt('3', `(property) a: { - a: {}; + a: any; }`); verify.quickInfoAt('4', `(property) a: { - a: {}; + a: any; }`); verify.quickInfoAt('5', `(property) a: { - a: {}; + a: any; }`); verify.quickInfoAt('6', `const oub: { - [x: string]: {}; + [x: string]: any; }`); verify.quickInfoAt('7', `function foo<{ - [x: string]: {}; + [x: string]: any; }>(deep: Deep<{ - [x: string]: {}; + [x: string]: any; }>): { - [x: string]: {}; + [x: string]: any; }`); verify.quickInfoAt('8', `{ - [x: string]: {}; + [x: string]: any; }`); verify.quickInfoAt('9', `{ - [x: string]: {}; + [x: string]: any; }`); verify.quickInfoAt('10', `{ - [x: string]: {}; + [x: string]: any; }`); From f8c86552bcd8d672c9f47ce961199d1d295b7f45 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 5 Jan 2018 15:44:38 -0800 Subject: [PATCH 16/16] Better name for deferred mapped type:ReverseMapped --- src/compiler/checker.ts | 52 ++++++++++--------- src/compiler/types.ts | 8 +-- .../reference/api/tsserverlibrary.d.ts | 2 +- tests/baselines/reference/api/typescript.d.ts | 2 +- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d21b15249ba..b3669978bab 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -339,7 +339,7 @@ namespace ts { const jsObjectLiteralIndexInfo = createIndexInfo(anyType, /*isReadonly*/ false); const globals = createSymbolTable(); - const deferredInferenceCache = createMap(); + const reverseMappedCache = createMap(); let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -2861,7 +2861,7 @@ namespace ts { typeElements.push(signatureToSignatureDeclarationHelper(signature, SyntaxKind.ConstructSignature, context)); } if (resolvedType.stringIndexInfo) { - const indexInfo = resolvedType.objectFlags & ObjectFlags.Deferred ? + const indexInfo = resolvedType.objectFlags & ObjectFlags.ReverseMapped ? createIndexInfo(anyType, resolvedType.stringIndexInfo.isReadonly, resolvedType.stringIndexInfo.declaration) : resolvedType.stringIndexInfo; typeElements.push(indexInfoToIndexSignatureDeclarationHelper(indexInfo, IndexKind.String, context)); @@ -2876,7 +2876,7 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getCheckFlags(propertySymbol) & CheckFlags.Deferred ? anyType : getTypeOfSymbol(propertySymbol); + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.ReverseMapped ? anyType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -3685,7 +3685,7 @@ namespace ts { writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } - const stringIndexInfo = resolved.objectFlags & ObjectFlags.Deferred && resolved.stringIndexInfo ? + const stringIndexInfo = resolved.objectFlags & ObjectFlags.ReverseMapped && resolved.stringIndexInfo ? createIndexInfo(anyType, resolved.stringIndexInfo.isReadonly, resolved.stringIndexInfo.declaration) : resolved.stringIndexInfo; buildIndexSignatureDisplay(stringIndexInfo, writer, IndexKind.String, enclosingDeclaration, globalFlags, symbolStack); @@ -3699,7 +3699,7 @@ namespace ts { writer.reportPrivateInBaseOfClassExpression(symbolName(p)); } } - const t = getCheckFlags(p) & CheckFlags.Deferred ? anyType : getTypeOfSymbol(p); + const t = getCheckFlags(p) & CheckFlags.ReverseMapped ? anyType : getTypeOfSymbol(p); if (p.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(t).length) { const signatures = getSignaturesOfType(t, SignatureKind.Call); for (const signature of signatures) { @@ -4907,8 +4907,8 @@ namespace ts { if (getCheckFlags(symbol) & CheckFlags.Instantiated) { return getTypeOfInstantiatedSymbol(symbol); } - if (getCheckFlags(symbol) & CheckFlags.Deferred) { - return inferDeferredMappedType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); + if (getCheckFlags(symbol) & CheckFlags.ReverseMapped) { + return getTypeOfReverseMappedSymbol(symbol as ReverseMappedSymbol); } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { return getTypeOfVariableOrParameterOrProperty(symbol); @@ -6120,15 +6120,15 @@ namespace ts { } } - function resolveDeferredMappedTypeMembers(type: DeferredMappedType) { + function resolveReverseMappedTypeMembers(type: ReverseMappedType) { const indexInfo = getIndexInfoOfType(type.source, IndexKind.String); const readonlyMask = type.mappedType.declaration.readonlyToken ? false : true; const optionalMask = type.mappedType.declaration.questionToken ? 0 : SymbolFlags.Optional; - const stringIndexInfo = indexInfo && createIndexInfo(inferDeferredMappedType(indexInfo.type, type.mappedType), readonlyMask && indexInfo.isReadonly); + const stringIndexInfo = indexInfo && createIndexInfo(inferReverseMappedType(indexInfo.type, type.mappedType), readonlyMask && indexInfo.isReadonly); const members = createSymbolTable(); for (const prop of getPropertiesOfType(type.source)) { - const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); - const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; + const checkFlags = CheckFlags.ReverseMapped | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as ReverseMappedSymbol; inferredProp.declarations = prop.declarations; inferredProp.propertyType = getTypeOfSymbol(prop); inferredProp.mappedType = type.mappedType; @@ -6276,8 +6276,8 @@ namespace ts { else if ((type).objectFlags & ObjectFlags.ClassOrInterface) { resolveClassOrInterfaceMembers(type); } - else if ((type).objectFlags & ObjectFlags.Deferred) { - resolveDeferredMappedTypeMembers(type as DeferredMappedType); + else if ((type).objectFlags & ObjectFlags.ReverseMapped) { + resolveReverseMappedTypeMembers(type as ReverseMappedType); } else if ((type).objectFlags & ObjectFlags.Anonymous) { resolveAnonymousTypeMembers(type); @@ -11307,16 +11307,16 @@ namespace ts { */ function inferTypeForHomomorphicMappedType(source: Type, target: MappedType): Type { const key = source.id + "," + target.id; - if (deferredInferenceCache.has(key)) { - return deferredInferenceCache.get(key); + if (reverseMappedCache.has(key)) { + return reverseMappedCache.get(key); } - deferredInferenceCache.set(key, undefined); - const type = createDeferredMappedType(source, target); - deferredInferenceCache.set(key, type); + reverseMappedCache.set(key, undefined); + const type = createReverseMappedType(source, target); + reverseMappedCache.set(key, type); return type; } - function createDeferredMappedType(source: Type, target: MappedType) { + function createReverseMappedType(source: Type, target: MappedType) { const properties = getPropertiesOfType(source); if (properties.length === 0 && !getIndexInfoOfType(source, IndexKind.String)) { return undefined; @@ -11328,13 +11328,17 @@ namespace ts { return undefined; } } - const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, /*symbol*/ undefined) as DeferredMappedType; - deferred.source = source; - deferred.mappedType = target; - return deferred; + const reversed = createObjectType(ObjectFlags.ReverseMapped | ObjectFlags.Anonymous, /*symbol*/ undefined) as ReverseMappedType; + reversed.source = source; + reversed.mappedType = target; + return reversed; } - function inferDeferredMappedType(sourceType: Type, target: MappedType): Type { + function getTypeOfReverseMappedSymbol(symbol: ReverseMappedSymbol) { + return inferReverseMappedType(symbol.propertyType, symbol.mappedType); + } + + function inferReverseMappedType(sourceType: Type, target: MappedType): Type { const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(typeParameter); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index bd49ce9f90c..8398726ee66 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3251,7 +3251,7 @@ namespace ts { ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s) ContainsStatic = 1 << 9, // Synthetic property with static constituent(s) Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name - Deferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. + ReverseMapped = 1 << 11, // property of reverse-inferred homomorphic mapped type. Synthetic = SyntheticProperty | SyntheticMethod } @@ -3262,7 +3262,7 @@ namespace ts { } /* @internal */ - export interface DeferredTransientSymbol extends TransientSymbol { + export interface ReverseMappedSymbol extends TransientSymbol { propertyType: Type; mappedType: MappedType; } @@ -3501,7 +3501,7 @@ namespace ts { EvolvingArray = 1 << 8, // Evolving array type ObjectLiteralPatternWithComputedProperties = 1 << 9, // Object literal pattern with computed properties ContainsSpread = 1 << 10, // Object literal contains spread operation - Deferred = 1 << 11, // Object contains a deferred inferred property + ReverseMapped = 1 << 11, // Object contains a property from a reverse-mapped type ClassOrInterface = Class | Interface } @@ -3610,7 +3610,7 @@ namespace ts { } /* @internal */ - export interface DeferredMappedType extends ObjectType { + export interface ReverseMappedType extends ObjectType { source: Type; mappedType: MappedType; } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 926e715aaf3..145bf5f6fa8 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2066,7 +2066,7 @@ declare namespace ts { EvolvingArray = 256, ObjectLiteralPatternWithComputedProperties = 512, ContainsSpread = 1024, - Deferred = 2048, + ReverseMapped = 2048, ClassOrInterface = 3, } interface ObjectType extends Type { diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 2709e0c5294..ea547f4f45e 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2066,7 +2066,7 @@ declare namespace ts { EvolvingArray = 256, ObjectLiteralPatternWithComputedProperties = 512, ContainsSpread = 1024, - Deferred = 2048, + ReverseMapped = 2048, ClassOrInterface = 3, } interface ObjectType extends Type {